p_table <- function(tab_data, ...) {
  tab_data_2 <- deparse(substitute(tab_data))
  
  table_p <- do.call(CreateTableOne, 
                     list(data = as.name(tab_data_2), includeNA = TRUE, ...))
  table_p_out <- print(table_p,
                       showAllLevels = TRUE,
                       printToggle = FALSE)
  kable(table_p_out,
        align = "c")
}
uni_var <- function(test_var, data_imp) {
                
        cat("_________________________________________________")
        cat("\n")
        cat("   \n##", test_var)
        cat("\n")
        cat("_________________________________________________")
        cat("\n")
        
        f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
                              as.name(test_var),
                              sep = " ~ " ))
        
        data_imp_2 <- deparse(substitute(data_imp))
        km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
        print(km_fit)
        cat("\n")
        print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
        cat("\n")
        cat("\n")
        cat("\n")
        cat("   \n## Univariable Cox Proportional Hazard Model for: ", test_var)
        cat("\n")
        cat("\n")
        n_levels <- nlevels(data_imp[[test_var]])
        if(n_levels == 1){
                print("Only one level, no Cox model performed")
                cat("\n")
        } else {
                cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
                print(summary(cox_fit))
                cat("\n")
                
                do.call("ggforest",
                         list(model = cox_fit, data = as.name(data_imp_2)))
        }
        cat("\n")
        cat("\n")
        cat("\n")
        cat("   \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
        p <- do.call("ggsurvplot",
                     list(fit = km_fit, data = as.name(data_imp_2),
                          palette = "jco", censor = FALSE, legend = "right",
                          linetype = "strata", xlab = "Time (Months)"))
        print(p)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
               1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
               3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
               8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
               2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
               1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
                   "AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
                   "MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
                   "UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
                   "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
                   "DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
                   "REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
                   "TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
                   "TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
                   "CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
                   "CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
                   "CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
                   "CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
                   "CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
                   "CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
                   "CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
                   "CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
                   "CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
                   "CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
                   "CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
                   "RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
                   "RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
                   "REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
                   "RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
                   "RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
                   "REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
                   "DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
                   "RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
                   "PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
                   "DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
                   "RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
                   "RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
                   "METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
                   "METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
                       
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
breast <-  read_fwf('NCDBPUF_Breast.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
vulva <-  read_fwf('NCDBPUF_Vulva.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
vagina <-  read_fwf('NCDBPUF_Vagina.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
penis <-  read_fwf('NCDBPUF_Penis.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
  
otheracuteleuk  <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
  
ALL  <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, 
                 vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina, 
   penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000", 
"C001", 
"C002", 
"C003", 
"C004", 
"C005", 
"C006", 
"C008",
"C009", 
"C019", 
"C020", 
"C021",
"C022", 
"C023", 
"C024", 
"C028", 
"C029",
"C030",
"C031",
"C039", 
"C040", 
"C041", 
"C048",
"C049", 
"C050", 
"C051", 
"C052", 
"C058", 
"C059",
"C060", 
"C061", 
"C062", 
"C068", 
"C069", 
"C079",  
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
                                 "C440", "C441", "C442", "C443", "C444", "C445",
                                 "C446", "C447", "C448", "C449",
                                 
                                 #breast - nipple
                                 "C500",
                                 
                                 #vagina/vulva
                                 "C510", "C511", "C512", "C518", "C519", "C529",
                                 
                                 #penis
                                 "C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
  "C09.8 Tonsil: Overlapping",
  "C09.9 Tonsil NOS",
  "C11.1 Nasopharynx: Poster Wall", 
  "C14.2 Waldeyer Ring",
  "C30.0 Nasal Cavity",
  "C37.9 Thymus",
"C42.0 Blood",
  "C42.2 Spleen",
"C42.4 Hematopoietic NOS",
 #skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS", 
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
  "C77.0 Lymph Nodes: HeadFaceNeck",
  "C77.1 Intrathoracic Lymph Nodes",
  "C77.2 Intra-abdominal LymphNodes",
  "C77.3 Lymph Nodes of axilla or arm ",
  "C77.4 Lymph Nodes: Leg",
  "C77.5 Pelvic Lymph Nodes",
  "C77.8 Lymph Nodes: multiple region",
  "C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE) 
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
              "DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS",  "RAD_REGIONAL_DOSE_CGY",
              "RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", 
              "DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
              "RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
        mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
                                            "Community Cancer Program" = "1",
                                            "Comprehensive Comm Ca Program" = "2",
                                            "Academic/Research Program" = "3",
                                            "Integrated Network Ca Program" = "4",
                                            "Other" = "9")) %>%
        mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
                                            "New England" = "1",
                                            "Middle Atlantic" = "2",
                                            "South Atlantic" = "3",
                                            "East North Central" = "4",
                                            "East South Central" = "5",
                                            "West North Central" = "6",
                                            "West South Central" = "7",
                                            "Mountain" = "8",
                                            "Pacific" = "9",
                                            "out of US" = "0")) %>%
        mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
                                                 "Northeast" = c("1", "2"),
                                                 "South" = c("3", "7"),
                                                 "Midwest" = c("4", "5", "6"),
                                                 "West" = c("8", "9"))) %>%
        mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
        mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
        mutate(SEX_F = fct_recode(SEX,
                                "Male" = "1",
                                "Female" = "2")) %>%
        mutate(RACE_F = fct_collapse(RACE,
                                "White" = c("01"),
                                "Black" = c("02"),
                                "Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
                                            "16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
                                            "32", "96", "97"),
                                "Other/Unk" = c("03", "98", "99"))) %>%
        mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
                                       "Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
                                       "No" = c("0"),
                                       "Unknown" = c("9"))) %>%
        mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
                                         "None" = "0",
                                         "Private" = "1",
                                         "Medicaid" = "2",
                                         "Medicare" = "3",
                                         "Other Government" = "4",
                                         "Unknown" = "9")) %>%
        mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
                                         "Private")) %>%
        mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
                                      "Less than $38,000" = "1",
                                      "$38,000 - $47,999" = "2",
                                      "$48,000 - $62,999" = "3",
                                      "$63,000 +" = "4")) %>%
        mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
                                        "21% or more" = "1",
                                        "13 - 20.9%" = "2",
                                        "7 - 12.9%" = "3",
                                        "Less than 7%" = "4")) %>%
        mutate(U_R_F = fct_collapse(UR_CD_13,
                                    "Metro" = c("1", "2", "3"),
                                    "Urban" = c("4", "5", "6", "7"),
                                    "Rural" = c("8", "9"))) %>%
        mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
                                              All_Part_Prim = c("10", "11", "12", "13",
                                                                "14", "20", "21", "22"),
                                              Other_Facility = c("00"))) %>%
        mutate(GRADE_F = fct_recode(GRADE,
                                  "Gr I: Well Diff" = "1",
                                  "Gr II: Mod Diff" = "2",
                                  "Gr III: Poor Diff" = "3",
                                  "Gr IV: Undiff/Anaplastic" = "4",
                                  "NA/Unkown" = "9")) %>%
        mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
        mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
        mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
        mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
                                        "1")) %>%
        mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
                                        "1")) %>%
        mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
                                       "N_A" = "88")) %>%
        mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
                                    "No Residual" = "0",
                                    "Residual, NOS" = "1",
                                    "Microscopic Resid" = "2",
                                    "Macroscopic Resid" = "3",
                                    "Not evaluable" = "7",
                                    "No surg" = "8",
                                    "Unknown" = "9")) %>%
        mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
                                         "Yes" = c("1", "2", "3"),
                                         "No" = c("0"),
                                         "No surg/Unk/NA" = c("7", "8", "9"))) %>%
        mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
                                                 "No_Surg_or_No_Readmit" = "0",
                                                 "Unplan_Readmit_Same" = "1",
                                                 "Plan_Readmit_Same" = "2",
                                                 "PlanUnplan_Same" = "3",
                                                 "Unknown" = "4")) %>%
        mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
                                                "None" = "0",
                                                "Beam Radiation" = "1",
                                                "Radioactive Implants" = "2",
                                                "Radioisotopes" = "3",
                                                "Beam + Imp or Isotopes" = "4",
                                                "Radiation, NOS" = "5",
                                                "Unknown" = "9")) %>%
        mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
                                                 "Alive_30" = "0",
                                                 "Dead_30" = "1",
                                                 "Unknown" = "9")) %>%
        mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
                                                 "Alive_90" = "0",
                                                 "Dead_90" = "1",
                                                 "Unknown" = "9")) %>%
        mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
                                                      "Neg_LymphVasc_Inv" = "0",
                                                      "Pos_LumphVasc_Inv" = "1",
                                                      "N_A" = "8",
                                                      "Unknown" = "9")) %>%
        mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
                                                     "No_Surg" = "0",
                                                     "Robot_Assist" = "1",
                                                     "Robot_to_Open" = "2",
                                                     "Endo_Lap" = "3",
                                                     "Endo_Lap_to_Open" = "4",
                                                     "Open_Unknown" = "5",
                                                     "Unknown" = "9")) %>%
        mutate(All = "All") %>%
        mutate(All = factor(All)) %>%
        mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
                                                    "Surg performed" = "0",
                                                    "Surg not recommended" = "1",
                                                    "No surg due to pt factors" = "2",
                                                    "No surg, pt died" = "5",
                                                    "Surg rec, not done" = "6",
                                                    "Surg rec, pt refused" = "7",
                                                    "Surg rec, unk if done" = "8",
                                                    "Unknown" = "9")) %>%
        mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
                                   "Yes",
                                   ifelse(REASON_FOR_NO_SURGERY == "9",
                                          "Ukn",
                                          "No"))) %>%
        mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
                             SURGERY_YN == "No" ~ FALSE,
                             TRUE ~ NA))  %>%
        mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
                                                    "Rad performed" = "0",
                                                    "Rad not recommended" = "1",
                                                    "No Rad due to pt factors" = "2",
                                                    "No Rad, pt died" = "5",
                                                    "Rad rec, not done" = "6",
                                                    "Rad rec, pt refused" = "7",
                                                    "Rad rec, unk if done" = "8",
                                                    "Unknown" = "9")) %>%
        mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
                                   "Yes",
                                   ifelse(REASON_FOR_NO_RADIATION == "9",
                                          NA,
                                          "No"))) %>%
        mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
                                                   "None or Surg or Rad" = "0",
                                                   "Rad before Surg" = "2",
                                                   "Surg before Rad" = "3",
                                                   "Rad before and after Surg" = "4",
                                                   "Intraop Rad" = "5",
                                                   "Intraop Rad plus other" = "6",
                                                   "Unknown" = "9")) %>%
        mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
                                     "Surg Alone",
                                     ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
                                            "Rad Alone",
                                            ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
                                                   "No Treatment",
                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "2",
                                                          "Rad then Surg",
                                                          ifelse(RX_SUMM_SURGRAD_SEQ == "3",
                                                                 "Surg then Rad",
                                                                 ifelse(RX_SUMM_SURGRAD_SEQ == "4",
                                                                        "Rad before and after Surg",
                                                                        "Other"))))))) %>%
        mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
                                          "Surg Alone",
                                          "Surg then Rad",
                                          "Rad Alone")) %>%
        mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
                                       "No" = c("00", "82", "85", "86", "87"),
                                       "Yes" = c("01", "02", "03"),
                                       "Ukn" = c("88", "99"))) %>%
        mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
                                       "No" = c("00", "82", "85", "86", "87"),
                                       "Yes" = c("01"),
                                       "Ukn" = c("88", "99"))) %>%
        mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                     "Surg, No rad, No Chemo",
                                     ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                            "Rad, No Surg, No Chemo",
                                            ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                                   "No Surg, No Rad, No Chemo",
                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
                                                          "Rad then Surg, No Chemo",
                                                          ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
                                                                 "Surg then Rad, No Chemo",
                                                                 ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
                                                                        "Rad before and after Surg, No Chemo",
                                ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                       "Surg, No rad, Yes Chemo",
                                       ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                              "Rad, No Surg, Yes Chemo",
                                              ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                                     "No Surg, No Rad, Yes Chemo",
                                                     ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
                                                            "Rad then Surg, Yes Chemo",
                                                            ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
                                                                   "Surg then Rad, Yes Chemo",
                                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
                                                                          "Rad before and after Surg, Yes Chemo",
                                                                          "Other"))))))))))))) %>%
        mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
        mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
        mutate(T_SIZE = ifelse(T_SIZE == 0,
                                "No Tumor",
                                ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
                                       "< 1 cm",
                                       ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
                                              "1-2 cm",
                                              ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
                                                     "2-3 cm",
                                                     ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
                                                            "3-4 cm",
                                                            ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
                                                                   "4-5 cm",
                                                                   ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
                                                                          "5-6 cm",
                                                                          ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
                                                                                         T_SIZE == 980 | T_SIZE == 989 |
                                                                                         T_SIZE == 997,
                                                                          ">6 cm",
                                                                          ifelse(T_SIZE == 988 | T_SIZE == 999,
                                                                                 "NA_unk",
                                                                                 "Microscopic focus")))))))))) %>%
        mutate(T_SIZE = factor(T_SIZE)) %>%
        mutate(T_SIZE = fct_relevel(T_SIZE,
                                     "No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
                                       "4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
        mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
                                      CS_METS_DX_BONE == "1" ~ "Bone",
                                      CS_METS_DX_BRAIN == "1" ~ "Brain",
                                      CS_METS_DX_LIVER == "1" ~ "Liver",
                                      TRUE ~ "None/Other/Unk/NA")) %>%
        mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
                                               "Non-Expansion State" = "0",
                                               "Jan 2014 Expansion States" = "1",
                                               "Early Expansion States (2010-13)" = "2",
                                               "Late Expansion States (> Jan 2014)" = "3",
                                               "Suppressed for Ages 0 - 39" = "9"))  %>%
        mutate(EXPN_GROUP =  case_when(MEDICAID_EXPN_CODE  %in% c("Jan 2014 Expansion States") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
                                       
                                       MEDICAID_EXPN_CODE  %in% c("Jan 2014 Expansion States") & 
                                         YEAR_OF_DIAGNOSIS %in% 
                                          c("2004", "2005", "2006", "2007", "2008", 
                                            "2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
               
                                       MEDICAID_EXPN_CODE  %in% c("Early Expansion States (2010-13)") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
                                       
                                        MEDICAID_EXPN_CODE  %in% c("Early Expansion States (2010-13)") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
                                       MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
                                       MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
                    
                                       MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") & 
                                        YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
                                       
                                       MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
  
  mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", 
                                            "2009", "2010", "2011", "2012", "2013")) %>%
  
  mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>% 
  
  mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" & 
                          IMMUNO_YN == "No", FALSE, 
                        ifelse(CHEMO_YN == "Ukn", NA, 
                               TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
                 "HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
                 "CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
                 "BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
                 "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
                 "MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
                 "PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
        mutate_at(fact_vars_2, funs(factor(.)))

Extract Data of Interest

# Non-Hodgkin Lymphoma Sites
site_code <- c( 
#additional sites
 #lip  
  "C000", "C001", "C002", "C003", "C004", "C005","C006", "C008","C009",
                                  
                                 
#skin/melanoma
  "C440", "C441", "C442", "C443", "C444", "C445", "C446", "C447", "C448", "C449",
                                 
 #breast - nipple
  "C500",
                                 
#vagina/vulva
  "C510", "C511", "C512", "C518", "C519", "C529",
                                 
#penis
 "C600", "C601", "C602", "C608", "C609", "C639")
#mycosis fungoides, Sezary syndrome, subcutaneous panniculitis-like T-cell lymphoma,
#cutaneous T-cell lymphoma, NOS, primary cutaneous CD30+T-cell lymphoma, 
#NK/T-cell lymphoma, primary cutaneous gamma-delta T-cell lymphoma, 
#and blastic NK cell lymphoma, respectively
#"9700" = Mycosis Fungoides
  # pagetoid reticulosis
#"9701" = Sezary Syndrome
  # Sezary disease
#"9708" = Subcutaneous panniculitislike T-cell lymphoma
#"9709" = Cutaneous T-cell lymphoma, NOS 
  # Cutaneous lymphoma, NOS (C44._); Primary cutaneous CD4-positive small/medium
  # T-cell lymphoma; Primary cutaneous CD8-positive aggressive
  # epidermotropic cytotoxic T-cell lymphoma
#"9718" = Primary cutaneous CD30+ T-cell lymphoproliferative disorder 
  # Lymphomatoid papulosis (C44._), Primary cutaneous anaplastic large cell,
  # lymphoma (C44._), Primary cutaneous CD30+ large T-cell lymphoma (C44._)
#"9726" = Primary cutaneous gamma-delta T-cell lymphoma
histo_code <- c("9718")
behavior_code <- c("3")
data <- dat %>%
        filter(BEHAVIOR %in% behavior_code) %>%
        filter(PRIMARY_SITE %in% site_code) %>%
        filter(HISTOLOGY %in% histo_code) %>%
        #filter(AGE >= 18) %>%
        filter(is.na(PUF_VITAL_STATUS) == FALSE) %>%
        filter(is.na(DX_LASTCONTACT_DEATH_MONTHS) == FALSE)  %>%
        filter(SEQUENCE_NUMBER == "00") 
#file_path <- c("/Users/beastatlife/Google Drive/Penn/Research/Barbieri/NCDB")
#save(data,
#      file = paste0(file_path, "/CTCL_data.Rda"))
#load("MF_data.Rda")

Data including skin tumors was obtained from the NCBD on October 7, 2019. Cases that were included in this analysis were those with:

  1. Site codes: C000, C001, C002, C003, C004, C005, C006, C008, C009, C440, C441, C442, C443, C444, C445, C446, C447, C448, C449, C500, C510, C511, C512, C518, C519, C529, C600, C601, C602, C608, C609, C639
  2. Histology codes: 9718
  3. Behavior codes: 3

Patients were excluded if they didn’t have values for either follow up or vital status.

Patients were excluded if they had surgery to a distant site using RX_SUMM_SURG_OTH_REGDIS. This was done to avoid confounding of different surgical procedures. We are only interested in surgery at the primary site. These distant site surgeries were being counted in the surgery/radiation sequence and thus to simplify analysis they were removed.

data %>%
        CreateTableOne(data = .,
                     vars = c("RX_SUMM_SURG_OTH_REGDIS"),
                     includeNA = TRUE) %>%
        print(.,
              showAllLevels = TRUE)
                             
                              level Overall     
  n                                 1200        
  RX_SUMM_SURG_OTH_REGDIS (%) 0     1180 (98.3) 
                              1        7 ( 0.6) 
                              2        0 ( 0.0) 
                              3        0 ( 0.0) 
                              4        3 ( 0.2) 
                              5        0 ( 0.0) 
                              9       10 ( 0.8) 
data <- data %>%
        filter(RX_SUMM_SURG_OTH_REGDIS == "0") 

Race was grouped as white, black, asian, other/unknown Stage was grouped into 0, I, II, III, IV, NA_Unknown, stage 0 was removed Whether surgery was performed was based on the REASON_FOR_NO_SURGERY variable. The SURGERY_YN variable was classified as ‘Yes’, ‘No’, or ‘Unknown’.

Whether radiation was performed was based on the REASON_FOR_NO_RADIATION variable. The RADIATION_YN variable was classified as ‘Yes’, ‘No’, or ‘Unknown’.

Table of variables for all cases:

data <- data %>% droplevels()
p_table(data,
        vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY",  "AGE", "AGE_F", "AGE_40",
                 "SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F", 
                 "INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
                 "SITE_TEXT",  "HISTOLOGY", "BEHAVIOR", "GRADE_F", 
                 "DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
                 "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
                 "TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
                 "DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
                 "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
                 "PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS", 
                 "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
                 "SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "IMMUNO_YN", "Tx_YN", "mets_at_dx",
                 "MEDICAID_EXPN_CODE", "EXPN_GROUP", "YEAR_OF_DIAGNOSIS"))
level Overall
n 1180
FACILITY_TYPE_F (%) Community Cancer Program 69 ( 5.8)
Comprehensive Comm Ca Program 297 ( 25.2)
Academic/Research Program 510 ( 43.2)
Integrated Network Ca Program 96 ( 8.1)
NA 208 ( 17.6)
FACILITY_LOCATION_F (%) New England 58 ( 4.9)
Middle Atlantic 185 ( 15.7)
South Atlantic 196 ( 16.6)
East North Central 200 ( 16.9)
East South Central 60 ( 5.1)
West North Central 65 ( 5.5)
West South Central 42 ( 3.6)
Mountain 54 ( 4.6)
Pacific 112 ( 9.5)
NA 208 ( 17.6)
FACILITY_GEOGRAPHY (%) Northeast 243 ( 20.6)
South 238 ( 20.2)
Midwest 325 ( 27.5)
West 166 ( 14.1)
NA 208 ( 17.6)
AGE (mean (sd)) 57.02 (19.17)
AGE_F (%) (0,54] 493 ( 41.8)
(54,64] 233 ( 19.7)
(64,74] 221 ( 18.7)
(74,100] 232 ( 19.7)
NA 1 ( 0.1)
AGE_40 (%) (0,40] 218 ( 18.5)
(40,100] 961 ( 81.4)
NA 1 ( 0.1)
SEX_F (%) Male 683 ( 57.9)
Female 497 ( 42.1)
RACE_F (%) White 987 ( 83.6)
Black 126 ( 10.7)
Other/Unk 33 ( 2.8)
Asian 34 ( 2.9)
HISPANIC (%) No 1058 ( 89.7)
Yes 65 ( 5.5)
Unknown 57 ( 4.8)
INSURANCE_F (%) Private 614 ( 52.0)
None 30 ( 2.5)
Medicaid 62 ( 5.3)
Medicare 429 ( 36.4)
Other Government 17 ( 1.4)
Unknown 28 ( 2.4)
INCOME_F (%) Less than $38,000 156 ( 13.2)
$38,000 - $47,999 238 ( 20.2)
$48,000 - $62,999 365 ( 30.9)
$63,000 + 410 ( 34.7)
NA 11 ( 0.9)
EDUCATION_F (%) 21% or more 152 ( 12.9)
13 - 20.9% 266 ( 22.5)
7 - 12.9% 433 ( 36.7)
Less than 7% 319 ( 27.0)
NA 10 ( 0.8)
U_R_F (%) Metro 980 ( 83.1)
Urban 153 ( 13.0)
Rural 13 ( 1.1)
NA 34 ( 2.9)
CROWFLY (mean (sd)) 30.18 (102.48)
CDCC_TOTAL_BEST (%) 0 1043 ( 88.4)
1 97 ( 8.2)
2 25 ( 2.1)
3 15 ( 1.3)
SITE_TEXT (%) C44.0 Skin of lip, NOS 11 ( 0.9)
C44.1 Eyelid 5 ( 0.4)
C44.2 External ear 11 ( 0.9)
C44.3 Skin of ear and unspecified parts of face 113 ( 9.6)
C44.4 Skin of scalp and neck 66 ( 5.6)
C44.5 Skin of trunk 217 ( 18.4)
C44.6 Skin of upper limb and shoulder 199 ( 16.9)
C44.7 Skin of lower limb and hip 207 ( 17.5)
C44.8 Overlapping lesion of skin 52 ( 4.4)
C44.9 Skin, NOS 290 ( 24.6)
C51.9 Vulva, NOS 3 ( 0.3)
C52.9 Vagina, NOS 1 ( 0.1)
C60.0 Prepuce 2 ( 0.2)
C60.9 Penis 3 ( 0.3)
HISTOLOGY (%) 9718 1180 (100.0)
BEHAVIOR (%) 3 1180 (100.0)
GRADE_F (%) Gr II: Mod Diff 1 ( 0.1)
Gr III: Poor Diff 2 ( 0.2)
Gr IV: Undiff/Anaplastic 26 ( 2.2)
5 923 ( 78.2)
6 21 ( 1.8)
7 2 ( 0.2)
8 1 ( 0.1)
NA/Unkown 204 ( 17.3)
DX_STAGING_PROC_DAYS (mean (sd)) 3.89 (28.32)
TNM_CLIN_T (%) N_A 1161 ( 98.4)
cX 1 ( 0.1)
NA 18 ( 1.5)
TNM_CLIN_N (%) N_A 1161 ( 98.4)
cX 1 ( 0.1)
NA 18 ( 1.5)
TNM_CLIN_M (%) N_A 1161 ( 98.4)
c0 1 ( 0.1)
NA 18 ( 1.5)
TNM_CLIN_STAGE_GROUP (%) 1 340 ( 28.8)
1A 394 ( 33.4)
1B 14 ( 1.2)
2 24 ( 2.0)
2A 32 ( 2.7)
2B 12 ( 1.0)
3 11 ( 0.9)
3A 8 ( 0.7)
3B 3 ( 0.3)
4 56 ( 4.7)
4A 38 ( 3.2)
4B 18 ( 1.5)
N_A 2 ( 0.2)
99 227 ( 19.2)
NA 1 ( 0.1)
TNM_PATH_T (%) N_A 1141 ( 96.7)
NA 39 ( 3.3)
TNM_PATH_N (%) N_A 1141 ( 96.7)
NA 39 ( 3.3)
TNM_PATH_M (%) N_A 1106 ( 93.7)
NA 74 ( 6.3)
TNM_PATH_STAGE_GROUP (%) 1 116 ( 9.8)
1A 116 ( 9.8)
1B 9 ( 0.8)
2 12 ( 1.0)
2A 7 ( 0.6)
2B 4 ( 0.3)
3 6 ( 0.5)
3A 1 ( 0.1)
4 22 ( 1.9)
4A 16 ( 1.4)
4B 6 ( 0.5)
N_A 1 ( 0.1)
99 777 ( 65.8)
NA 87 ( 7.4)
DX_RX_STARTED_DAYS (mean (sd)) 41.70 (56.67)
DX_SURG_STARTED_DAYS (mean (sd)) 12.43 (32.44)
DX_DEFSURG_STARTED_DAYS (mean (sd)) 17.34 (35.57)
MARGINS (%) No Residual 179 ( 15.2)
Residual, NOS 13 ( 1.1)
Microscopic Resid 12 ( 1.0)
Macroscopic Resid 5 ( 0.4)
Not evaluable 44 ( 3.7)
No surg 816 ( 69.2)
Unknown 111 ( 9.4)
MARGINS_YN (%) No 179 ( 15.2)
Yes 30 ( 2.5)
No surg/Unk/NA 971 ( 82.3)
SURG_DISCHARGE_DAYS (mean (sd)) 1.88 (11.13)
READM_HOSP_30_DAYS_F (%) No_Surg_or_No_Readmit 1141 ( 96.7)
Unplan_Readmit_Same 4 ( 0.3)
Plan_Readmit_Same 13 ( 1.1)
9 22 ( 1.9)
RX_SUMM_RADIATION_F (%) None 699 ( 59.2)
Beam Radiation 461 ( 39.1)
Radioactive Implants 8 ( 0.7)
Beam + Imp or Isotopes 1 ( 0.1)
Radiation, NOS 5 ( 0.4)
Unknown 6 ( 0.5)
PUF_30_DAY_MORT_CD_F (%) Alive_30 340 ( 28.8)
Dead_30 3 ( 0.3)
Unknown 6 ( 0.5)
NA 831 ( 70.4)
PUF_90_DAY_MORT_CD_F (%) Alive_90 335 ( 28.4)
Dead_90 6 ( 0.5)
Unknown 8 ( 0.7)
NA 831 ( 70.4)
DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) 57.05 (43.00)
LYMPH_VASCULAR_INVASION_F (%) N_A 567 ( 48.1)
NA 613 ( 51.9)
RX_HOSP_SURG_APPR_2010_F (%) No_Surg 455 ( 38.6)
Endo_Lap_to_Open 1 ( 0.1)
Open_Unknown 110 ( 9.3)
Unknown 1 ( 0.1)
NA 613 ( 51.9)
SURG_RAD_SEQ (%) Surg Alone 217 ( 18.4)
Surg then Rad 140 ( 11.9)
Rad Alone 332 ( 28.1)
No Treatment 473 ( 40.1)
Other 16 ( 1.4)
Rad then Surg 2 ( 0.2)
SURG_RAD_SEQ_C (%) Surg, No rad, No Chemo 163 ( 13.8)
Surg then Rad, No Chemo 111 ( 9.4)
Surg then Rad, Yes Chemo 25 ( 2.1)
Surg, No rad, Yes Chemo 47 ( 4.0)
No Surg, No Rad, Yes Chemo 192 ( 16.3)
No Surg, No Rad, No Chemo 268 ( 22.7)
Other 48 ( 4.1)
Rad, No Surg, Yes Chemo 56 ( 4.7)
Rad, No Surg, No Chemo 268 ( 22.7)
Rad then Surg, No Chemo 2 ( 0.2)
SURGERY_YN (%) No 807 ( 68.4)
Ukn 11 ( 0.9)
Yes 362 ( 30.7)
RADIATION_YN (%) No 697 ( 59.1)
Yes 475 ( 40.3)
NA 8 ( 0.7)
CHEMO_YN (%) No 819 ( 69.4)
Yes 323 ( 27.4)
Ukn 38 ( 3.2)
IMMUNO_YN (%) No 1142 ( 96.8)
Yes 25 ( 2.1)
Ukn 13 ( 1.1)
Tx_YN (%) FALSE 258 ( 21.9)
TRUE 884 ( 74.9)
NA 38 ( 3.2)
mets_at_dx (%) None/Other/Unk/NA 1180 (100.0)
MEDICAID_EXPN_CODE (%) Non-Expansion State 320 ( 27.1)
Jan 2014 Expansion States 323 ( 27.4)
Early Expansion States (2010-13) 173 ( 14.7)
Late Expansion States (> Jan 2014) 156 ( 13.2)
Suppressed for Ages 0 - 39 208 ( 17.6)
EXPN_GROUP (%) Exclude 208 ( 17.6)
Post-Expansion 146 ( 12.4)
Pre-Expansion 826 ( 70.0)
YEAR_OF_DIAGNOSIS (%) 2004 97 ( 8.2)
2005 94 ( 8.0)
2006 92 ( 7.8)
2007 109 ( 9.2)
2008 101 ( 8.6)
2009 120 ( 10.2)
2010 119 ( 10.1)
2011 90 ( 7.6)
2012 86 ( 7.3)
2013 87 ( 7.4)
2014 87 ( 7.4)
2015 98 ( 8.3)
preExpMedicare  <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion" & INSURANCE_F == "Medicare"))
postExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion" & INSURANCE_F == "Medicare"))
# p = 0.25 when comparing change in proportion of patients with Medicare before and after ACA expansion
prop.test(c(preExpMedicare, postExpMedicare), 
          c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))

    2-sample test for equality of proportions with continuity correction

data:  c(preExpMedicare, postExpMedicare) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpMedicare, postExpMedicare) out of     filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.00373, df = 1, p-value = 0.9513
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.08445440  0.09795402
sample estimates:
   prop 1    prop 2 
0.4382567 0.4315068 
preExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion") %>% 
                            filter(INSURANCE_F == "None"))
postExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion") %>% 
                             filter(INSURANCE_F == "None"))
# Significant decrease in the overall proportion of patients without insurance after ACA expansion 
prop.test(c(preExpNoInsurance, postExpNoInsurance), 
          c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect

    2-sample test for equality of proportions with continuity correction

data:  c(preExpNoInsurance, postExpNoInsurance) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpNoInsurance, postExpNoInsurance) out of     filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.0007149, df = 1, p-value = 0.9787
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.03680837  0.02801869
sample estimates:
    prop 1     prop 2 
0.02300242 0.02739726 
p_table(no_Excludes, strata = "EXPN_GROUP", vars = "DX_RX_STARTED_DAYS")

level Post-Expansion Pre-Expansion p test
n 248 1137
DX_RX_STARTED_DAYS (mean (sd)) 48.96 (44.78) 48.91 (143.60) 0.996

data <- data %>% mutate(Insured = INSURANCE_F != "Unknown")

Kaplan Meier Analysis

All

uni_var(test_var = "All", data_imp = data)
_________________________________________________
   
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ All, data = data)

      n  events  median 0.95LCL 0.95UCL 
   1180     300      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ All, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    970     106    0.907 0.00865        0.890        0.924
   24    822      62    0.846 0.01097        0.825        0.868
   36    706      28    0.816 0.01197        0.793        0.840
   48    614      20    0.792 0.01280        0.767        0.817
   60    514      23    0.760 0.01389        0.733        0.788
  120    124      54    0.634 0.02048        0.595        0.675



   
## Univariable Cox Proportional Hazard Model for:  All

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  All

Facility Type

uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
   
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

   208 observations deleted due to missingness 
                                                n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program       69     21     NA    93.9      NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program 297    104    118    98.2      NA
FACILITY_TYPE_F=Academic/Research Program     510    135     NA   130.6      NA
FACILITY_TYPE_F=Integrated Network Ca Program  96     24     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

208 observations deleted due to missingness 
                FACILITY_TYPE_F=Community Cancer Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     52       9    0.859  0.0437        0.777        0.949
   24     50       1    0.842  0.0459        0.757        0.937
   36     40       3    0.789  0.0522        0.693        0.899
   48     36       1    0.770  0.0545        0.670        0.884
   60     32       1    0.748  0.0572        0.643        0.869
  120      8       6    0.556  0.0815        0.417        0.741

                FACILITY_TYPE_F=Comprehensive Comm Ca Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    232      39    0.863  0.0204        0.824        0.904
   24    191      22    0.778  0.0252        0.730        0.829
   36    162       5    0.756  0.0263        0.706        0.810
   48    137       9    0.712  0.0286        0.658        0.770
   60    110      10    0.655  0.0315        0.596        0.720
  120     23      16    0.487  0.0466        0.404        0.587

                FACILITY_TYPE_F=Academic/Research Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    417      43    0.913  0.0127        0.888        0.938
   24    354      27    0.851  0.0165        0.820        0.884
   36    301      18    0.806  0.0187        0.770        0.844
   48    270       6    0.789  0.0196        0.752        0.829
   60    224      10    0.758  0.0211        0.718        0.801
  120     51      27    0.622  0.0308        0.564        0.685

                FACILITY_TYPE_F=Integrated Network Ca Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     82       9    0.904  0.0305        0.846        0.966
   24     65       6    0.832  0.0397        0.758        0.914
   36     57       0    0.832  0.0397        0.758        0.914
   48     47       3    0.785  0.0460        0.699        0.880
   60     40       2    0.749  0.0504        0.656        0.854
  120     12       4    0.634  0.0700        0.511        0.788




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_TYPE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

  n= 972, number of events= 284 
   (208 observations deleted due to missingness)

                                                coef exp(coef) se(coef)      z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program  0.2180    1.2436   0.2393  0.911    0.362
FACILITY_TYPE_FAcademic/Research Program     -0.1476    0.8628   0.2346 -0.629    0.529
FACILITY_TYPE_FIntegrated Network Ca Program -0.2048    0.8148   0.2988 -0.685    0.493

                                             exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program    1.2436     0.8041    0.7779     1.988
FACILITY_TYPE_FAcademic/Research Program        0.8628     1.1591    0.5448     1.366
FACILITY_TYPE_FIntegrated Network Ca Program    0.8148     1.2273    0.4536     1.464

Concordance= 0.542  (se = 0.017 )
Rsquare= 0.009   (max possible= 0.975 )
Likelihood ratio test= 8.61  on 3 df,   p=0.03491
Wald test            = 8.86  on 3 df,   p=0.03119
Score (logrank) test = 8.96  on 3 df,   p=0.02982
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_TYPE_F

Facility Location

uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
   
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

   208 observations deleted due to missingness 
                                         n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England         58     13     NA      NA      NA
FACILITY_LOCATION_F=Middle Atlantic    185     62   91.7    82.6      NA
FACILITY_LOCATION_F=South Atlantic     196     69  127.3   105.0      NA
FACILITY_LOCATION_F=East North Central 200     55     NA   117.9      NA
FACILITY_LOCATION_F=East South Central  60     15     NA      NA      NA
FACILITY_LOCATION_F=West North Central  65     17     NA   127.2      NA
FACILITY_LOCATION_F=West South Central  42     11     NA    84.6      NA
FACILITY_LOCATION_F=Mountain            54     11     NA      NA      NA
FACILITY_LOCATION_F=Pacific            112     31  135.6   104.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

208 observations deleted due to missingness 
                FACILITY_LOCATION_F=New England 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     43       6    0.882  0.0453        0.797        0.975
   24     39       1    0.861  0.0487        0.771        0.962
   36     30       2    0.812  0.0570        0.708        0.932
   48     28       2    0.758  0.0648        0.641        0.896
   60     24       1    0.728  0.0689        0.604        0.876
  120      7       1    0.672  0.0833        0.527        0.857

                FACILITY_LOCATION_F=Middle Atlantic 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    153      20    0.888  0.0236        0.843        0.936
   24    126      13    0.810  0.0299        0.754        0.871
   36    106       2    0.796  0.0310        0.737        0.859
   48     88       6    0.748  0.0347        0.683        0.819
   60     68       6    0.694  0.0387        0.622        0.774
  120      8      15    0.420  0.0686        0.305        0.578

                FACILITY_LOCATION_F=South Atlantic 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    155      24    0.872  0.0245        0.825        0.921
   24    125      16    0.779  0.0309        0.721        0.842
   36    110       8    0.728  0.0339        0.664        0.797
   48     98       4    0.700  0.0353        0.634        0.773
   60     85       6    0.655  0.0375        0.585        0.733
  120     21       8    0.557  0.0465        0.473        0.656

                FACILITY_LOCATION_F=East North Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    164      22    0.888  0.0226        0.844        0.933
   24    138      11    0.824  0.0280        0.771        0.881
   36    117       3    0.806  0.0292        0.751        0.865
   48    109       1    0.799  0.0298        0.743        0.860
   60     94       2    0.783  0.0313        0.724        0.847
  120     22      15    0.574  0.0564        0.473        0.696

                FACILITY_LOCATION_F=East South Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     50       4    0.929  0.0341        0.865        0.999
   24     44       4    0.854  0.0478        0.766        0.953
   36     42       0    0.854  0.0478        0.766        0.953
   48     34       1    0.832  0.0513        0.738        0.939
   60     26       3    0.758  0.0621        0.646        0.890
  120      7       3    0.654  0.0777        0.518        0.825

                FACILITY_LOCATION_F=West North Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     52       8    0.875  0.0413        0.798        0.960
   24     44       2    0.839  0.0468        0.752        0.936
   36     36       3    0.780  0.0547        0.680        0.895
   48     30       2    0.736  0.0596        0.628        0.863
   60     23       0    0.736  0.0596        0.628        0.863
  120      7       1    0.687  0.0731        0.558        0.847

                FACILITY_LOCATION_F=West South Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     27       7    0.826  0.0600        0.716        0.952
   24     24       1    0.793  0.0661        0.673        0.933
   36     23       0    0.793  0.0661        0.673        0.933
   48     19       1    0.757  0.0722        0.627        0.912
   60     16       0    0.757  0.0722        0.627        0.912
  120      2       2    0.611  0.1095        0.430        0.869

                FACILITY_LOCATION_F=Mountain 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     48       1    0.981  0.0183        0.946        1.000
   24     41       3    0.920  0.0384        0.848        0.998
   36     32       2    0.875  0.0479        0.786        0.974
   48     29       1    0.847  0.0540        0.748        0.960
   60     24       2    0.786  0.0650        0.669        0.925
  120      6       2    0.711  0.0774        0.575        0.881

                FACILITY_LOCATION_F=Pacific 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     91       8    0.924  0.0257        0.875        0.976
   24     79       5    0.871  0.0336        0.807        0.939
   36     64       6    0.800  0.0416        0.722        0.885
   48     55       1    0.787  0.0429        0.707        0.875
   60     46       3    0.739  0.0482        0.651        0.840
  120     14       6    0.599  0.0657        0.483        0.743




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_LOCATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

  n= 972, number of events= 284 
   (208 observations deleted due to missingness)

                                          coef exp(coef) se(coef)      z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic     0.44210   1.55597  0.30544  1.447    0.148
FACILITY_LOCATION_FSouth Atlantic      0.43001   1.53727  0.30243  1.422    0.155
FACILITY_LOCATION_FEast North Central  0.14017   1.15047  0.30846  0.454    0.650
FACILITY_LOCATION_FEast South Central  0.02412   1.02441  0.37899  0.064    0.949
FACILITY_LOCATION_FWest North Central  0.16584   1.18039  0.36856  0.450    0.653
FACILITY_LOCATION_FWest South Central  0.30722   1.35964  0.40999  0.749    0.454
FACILITY_LOCATION_FMountain           -0.18741   0.82911  0.40978 -0.457    0.647
FACILITY_LOCATION_FPacific             0.14802   1.15953  0.33047  0.448    0.654

                                      exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic       1.5560     0.6427    0.8551     2.831
FACILITY_LOCATION_FSouth Atlantic        1.5373     0.6505    0.8498     2.781
FACILITY_LOCATION_FEast North Central    1.1505     0.8692    0.6285     2.106
FACILITY_LOCATION_FEast South Central    1.0244     0.9762    0.4874     2.153
FACILITY_LOCATION_FWest North Central    1.1804     0.8472    0.5732     2.431
FACILITY_LOCATION_FWest South Central    1.3596     0.7355    0.6087     3.037
FACILITY_LOCATION_FMountain              0.8291     1.2061    0.3714     1.851
FACILITY_LOCATION_FPacific               1.1595     0.8624    0.6067     2.216

Concordance= 0.543  (se = 0.018 )
Rsquare= 0.01   (max possible= 0.975 )
Likelihood ratio test= 9.56  on 8 df,   p=0.2974
Wald test            = 9.29  on 8 df,   p=0.3181
Score (logrank) test = 9.43  on 8 df,   p=0.3075
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_LOCATION_F

Facility Geography

uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
   
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

   208 observations deleted due to missingness 
                               n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 243     75    110      85      NA
FACILITY_GEOGRAPHY=South     238     80    127     106      NA
FACILITY_GEOGRAPHY=Midwest   325     87     NA     140      NA
FACILITY_GEOGRAPHY=West      166     42     NA     128      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

208 observations deleted due to missingness 
                FACILITY_GEOGRAPHY=Northeast 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    196      26    0.887  0.0209        0.847        0.929
   24    165      14    0.822  0.0257        0.773        0.873
   36    136       4    0.799  0.0273        0.748        0.855
   48    116       8    0.750  0.0306        0.693        0.813
   60     92       7    0.702  0.0337        0.639        0.771
  120     15      16    0.490  0.0542        0.395        0.609

                FACILITY_GEOGRAPHY=South 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    182      31    0.863  0.0228        0.820        0.909
   24    149      17    0.780  0.0282        0.727        0.837
   36    133       8    0.737  0.0305        0.679        0.799
   48    117       5    0.707  0.0320        0.647        0.773
   60    101       6    0.669  0.0339        0.606        0.739
  120     23      10    0.563  0.0433        0.484        0.655

                FACILITY_GEOGRAPHY=Midwest 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    266      34    0.893  0.0174        0.859        0.928
   24    226      17    0.833  0.0215        0.792        0.876
   36    195       6    0.810  0.0228        0.766        0.856
   48    173       4    0.793  0.0239        0.747        0.841
   60    143       5    0.768  0.0256        0.720        0.820
  120     36      19    0.608  0.0413        0.532        0.695

                FACILITY_GEOGRAPHY=West 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    139       9    0.943  0.0184        0.908        0.980
   24    120       8    0.887  0.0260        0.837        0.939
   36     96       8    0.824  0.0323        0.763        0.890
   48     84       2    0.806  0.0340        0.742        0.875
   60     70       5    0.754  0.0389        0.682        0.835
  120     20       8    0.636  0.0515        0.543        0.745




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_GEOGRAPHY

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

  n= 972, number of events= 284 
   (208 observations deleted due to missingness)

                              coef exp(coef) se(coef)      z Pr(>|z|)
FACILITY_GEOGRAPHYSouth    0.06242   1.06441  0.16087  0.388    0.698
FACILITY_GEOGRAPHYMidwest -0.22564   0.79800  0.15773 -1.431    0.153
FACILITY_GEOGRAPHYWest    -0.30079   0.74023  0.19298 -1.559    0.119

                          exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth      1.0644     0.9395    0.7766     1.459
FACILITY_GEOGRAPHYMidwest    0.7980     1.2531    0.5858     1.087
FACILITY_GEOGRAPHYWest       0.7402     1.3509    0.5071     1.081

Concordance= 0.545  (se = 0.018 )
Rsquare= 0.006   (max possible= 0.975 )
Likelihood ratio test= 5.95  on 3 df,   p=0.114
Wald test            = 5.91  on 3 df,   p=0.1159
Score (logrank) test = 5.96  on 3 df,   p=0.1137
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_GEOGRAPHY

Age Group

uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
   
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

   1 observation deleted due to missingness 
                 n events median 0.95LCL 0.95UCL
AGE_F=(0,54]   493     59     NA      NA      NA
AGE_F=(54,64]  233     41     NA      NA      NA
AGE_F=(64,74]  221     63  135.6   115.3      NA
AGE_F=(74,100] 232    137   54.1    36.2    66.1

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

1 observation deleted due to missingness 
                AGE_F=(0,54] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    432      20    0.958 0.00928        0.940        0.976
   24    377      17    0.918 0.01289        0.893        0.944
   36    336       6    0.903 0.01406        0.876        0.931
   48    297       3    0.895 0.01476        0.866        0.924
   60    252       3    0.885 0.01559        0.855        0.916
  120     72      10    0.830 0.02301        0.786        0.876

                AGE_F=(54,64] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    191      15    0.932  0.0170        0.899        0.966
   24    162       8    0.890  0.0218        0.848        0.934
   36    141       2    0.878  0.0230        0.834        0.924
   48    123       4    0.852  0.0259        0.802        0.904
   60    104       4    0.822  0.0288        0.768        0.881
  120     20       7    0.711  0.0481        0.623        0.812

                AGE_F=(64,74] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    183      18    0.915  0.0192        0.878        0.953
   24    157      11    0.858  0.0245        0.812        0.908
   36    130       7    0.818  0.0277        0.765        0.874
   48    114       3    0.798  0.0294        0.742        0.857
   60     95       7    0.746  0.0333        0.683        0.814
  120     23      13    0.585  0.0508        0.493        0.693

                AGE_F=(74,100] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    163      53    0.766  0.0282        0.713        0.823
   24    125      26    0.639  0.0327        0.578        0.707
   36     98      13    0.568  0.0345        0.504        0.640
   48     80      10    0.508  0.0358        0.442        0.583
   60     63       9    0.446  0.0369        0.379        0.524
  120      9      24    0.210  0.0419        0.142        0.310




   
## Univariable Cox Proportional Hazard Model for:  AGE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

  n= 1179, number of events= 300 
   (1 observation deleted due to missingness)

                coef exp(coef) se(coef)      z Pr(>|z|)    
AGE_F(54,64]  0.5272    1.6941   0.2035  2.590  0.00959 ** 
AGE_F(64,74]  0.9893    2.6895   0.1813  5.458 4.81e-08 ***
AGE_F(74,100] 1.9982    7.3756   0.1567 12.750  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

              exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64]      1.694     0.5903     1.137     2.524
AGE_F(64,74]      2.689     0.3718     1.885     3.837
AGE_F(74,100]     7.376     0.1356     5.425    10.028

Concordance= 0.696  (se = 0.017 )
Rsquare= 0.148   (max possible= 0.964 )
Likelihood ratio test= 188.8  on 3 df,   p=0
Wald test            = 190.9  on 3 df,   p=0
Score (logrank) test = 240.7  on 3 df,   p=0
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  AGE_F

Age Group

uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
   
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

   1 observation deleted due to missingness 
                  n events median 0.95LCL 0.95UCL
AGE_40=(0,40]   218     17     NA      NA      NA
AGE_40=(40,100] 961    283     NA     128      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

1 observation deleted due to missingness 
                AGE_40=(0,40] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    196       6    0.971  0.0116        0.949        0.994
   24    171       6    0.940  0.0170        0.907        0.973
   36    154       2    0.928  0.0185        0.893        0.965
   48    133       1    0.922  0.0194        0.885        0.961
   60    113       0    0.922  0.0194        0.885        0.961
  120     31       2    0.883  0.0329        0.821        0.950

                AGE_40=(40,100] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    773     100    0.892  0.0102        0.872        0.912
   24    650      56    0.824  0.0128        0.800        0.850
   36    551      26    0.790  0.0140        0.763        0.818
   48    481      19    0.761  0.0149        0.732        0.791
   60    401      23    0.722  0.0162        0.691        0.755
  120     93      52    0.576  0.0235        0.531        0.624




   
## Univariable Cox Proportional Hazard Model for:  AGE_40

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

  n= 1179, number of events= 300 
   (1 observation deleted due to missingness)

                 coef exp(coef) se(coef)     z Pr(>|z|)    
AGE_40(40,100] 1.5060    4.5086   0.2498 6.028 1.66e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

               exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100]     4.509     0.2218     2.763     7.357

Concordance= 0.573  (se = 0.012 )
Rsquare= 0.048   (max possible= 0.964 )
Likelihood ratio test= 57.48  on 1 df,   p=3.419e-14
Wald test            = 36.34  on 1 df,   p=1.658e-09
Score (logrank) test = 43.73  on 1 df,   p=3.772e-11
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  AGE_40

Gender

uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
   
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

               n events median 0.95LCL 0.95UCL
SEX_F=Male   683    172     NA     140      NA
SEX_F=Female 497    128     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

                SEX_F=Male 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    566      59    0.911  0.0111        0.889        0.933
   24    477      36    0.850  0.0142        0.823        0.878
   36    412      15    0.822  0.0155        0.792        0.853
   48    364      10    0.801  0.0165        0.770        0.834
   60    302      16    0.763  0.0182        0.729        0.800
  120     73      29    0.646  0.0267        0.596        0.700

                SEX_F=Female 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    404      47    0.901  0.0137        0.875        0.928
   24    345      26    0.840  0.0172        0.807        0.875
   36    294      13    0.807  0.0188        0.771        0.845
   48    250      10    0.778  0.0203        0.739        0.819
   60    212       7    0.755  0.0215        0.714        0.798
  120     51      25    0.618  0.0317        0.559        0.683




   
## Univariable Cox Proportional Hazard Model for:  SEX_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

  n= 1180, number of events= 300 

               coef exp(coef) se(coef)     z Pr(>|z|)
SEX_FFemale 0.03761   1.03833  0.11675 0.322    0.747

            exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale     1.038     0.9631     0.826     1.305

Concordance= 0.508  (se = 0.015 )
Rsquare= 0   (max possible= 0.964 )
Likelihood ratio test= 0.1  on 1 df,   p=0.7476
Wald test            = 0.1  on 1 df,   p=0.7473
Score (logrank) test = 0.1  on 1 df,   p=0.7473
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SEX_F

RACE_F

uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
   
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

                   n events median 0.95LCL 0.95UCL
RACE_F=White     987    234     NA      NA      NA
RACE_F=Black     126     55   92.6    53.4      NA
RACE_F=Other/Unk  33      7     NA      NA      NA
RACE_F=Asian      34      4     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

                RACE_F=White 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    821      78    0.918 0.00895        0.900        0.935
   24    703      46    0.864 0.01139        0.842        0.887
   36    605      23    0.834 0.01257        0.810        0.859
   48    526      16    0.811 0.01350        0.785        0.838
   60    446      21    0.777 0.01488        0.748        0.806
  120    109      45    0.651 0.02230        0.608        0.696

                RACE_F=Black 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     88      27    0.778  0.0378        0.707        0.856
   24     69      11    0.676  0.0436        0.596        0.767
   36     57       5    0.625  0.0459        0.541        0.722
   48     49       3    0.590  0.0476        0.504        0.691
   60     38       1    0.577  0.0484        0.489        0.680
  120     10       6    0.449  0.0616        0.343        0.587

                RACE_F=Other/Unk 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     29       1    0.970  0.0298        0.913        1.000
   24     23       4    0.836  0.0672        0.714        0.979
   36     20       0    0.836  0.0672        0.714        0.979
   48     18       1    0.794  0.0757        0.659        0.957
   60     15       0    0.794  0.0757        0.659        0.957
  120      4       1    0.733  0.0913        0.574        0.936

                RACE_F=Asian 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     32       0    1.000  0.0000        1.000            1
   24     27       1    0.966  0.0339        0.901            1
   36     24       0    0.966  0.0339        0.901            1
   48     21       0    0.966  0.0339        0.901            1
   60     15       1    0.912  0.0612        0.800            1
  120      1       2    0.776  0.1029        0.599            1




   
## Univariable Cox Proportional Hazard Model for:  RACE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

  n= 1180, number of events= 300 

                   coef exp(coef) se(coef)      z Pr(>|z|)    
RACE_FBlack      0.8317    2.2972   0.1501  5.540 3.02e-08 ***
RACE_FOther/Unk -0.1506    0.8602   0.3836 -0.393    0.695    
RACE_FAsian     -0.7044    0.4944   0.5045 -1.396    0.163    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack        2.2972     0.4353    1.7116     3.083
RACE_FOther/Unk    0.8602     1.1626    0.4056     1.824
RACE_FAsian        0.4944     2.0226    0.1839     1.329

Concordance= 0.564  (se = 0.011 )
Rsquare= 0.025   (max possible= 0.964 )
Likelihood ratio test= 29.67  on 3 df,   p=1.622e-06
Wald test            = 34.24  on 3 df,   p=1.765e-07
Score (logrank) test = 36.52  on 3 df,   p=5.826e-08
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RACE_F

Hispanic

uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
   
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

                    n events median 0.95LCL 0.95UCL
HISPANIC=No      1058    267     NA      NA      NA
HISPANIC=Yes       65     15     NA     100      NA
HISPANIC=Unknown   57     18     NA     128      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

                HISPANIC=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    863     100    0.902 0.00935        0.883        0.920
   24    741      45    0.852 0.01136        0.830        0.875
   36    638      25    0.822 0.01245        0.798        0.847
   48    552      19    0.797 0.01340        0.771        0.823
   60    461      22    0.763 0.01466        0.734        0.792
  120    111      50    0.633 0.02180        0.591        0.677

                HISPANIC=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     56       3    0.952  0.0270        0.901        1.000
   24     41       7    0.826  0.0503        0.733        0.931
   36     33       3    0.760  0.0591        0.652        0.885
   48     30       0    0.760  0.0591        0.652        0.885
   60     26       0    0.760  0.0591        0.652        0.885
  120      5       2    0.622  0.1007        0.452        0.854

                HISPANIC=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     51       3    0.946  0.0301        0.889        1.000
   24     40      10    0.761  0.0579        0.655        0.883
   36     35       0    0.761  0.0579        0.655        0.883
   48     32       1    0.739  0.0602        0.630        0.867
   60     27       1    0.715  0.0628        0.602        0.850
  120      8       2    0.657  0.0700        0.533        0.809




   
## Univariable Cox Proportional Hazard Model for:  HISPANIC

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

  n= 1180, number of events= 300 

                    coef exp(coef) se(coef)      z Pr(>|z|)
HISPANICYes     -0.01538   0.98474  0.26541 -0.058    0.954
HISPANICUnknown  0.16582   1.18036  0.24356  0.681    0.496

                exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes        0.9847     1.0155    0.5853     1.657
HISPANICUnknown    1.1804     0.8472    0.7323     1.903

Concordance= 0.505  (se = 0.009 )
Rsquare= 0   (max possible= 0.964 )
Likelihood ratio test= 0.45  on 2 df,   p=0.7982
Wald test            = 0.47  on 2 df,   p=0.7894
Score (logrank) test = 0.47  on 2 df,   p=0.789
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  HISPANIC

Insurance Status

uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
   
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

                               n events median 0.95LCL 0.95UCL
INSURANCE_F=Private          614     79     NA      NA      NA
INSURANCE_F=None              30     11     NA    22.6      NA
INSURANCE_F=Medicaid          62     16     NA      NA      NA
INSURANCE_F=Medicare         429    188   82.6    69.2     106
INSURANCE_F=Other Government  17      1     NA      NA      NA
INSURANCE_F=Unknown           28      5     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

                INSURANCE_F=Private 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    533      24    0.959 0.00824        0.943        0.975
   24    456      19    0.923 0.01131        0.901        0.945
   36    413       5    0.913 0.01210        0.889        0.937
   48    361       7    0.896 0.01337        0.870        0.923
   60    307       6    0.881 0.01458        0.853        0.910
  120     84      16    0.807 0.02278        0.763        0.853

                INSURANCE_F=None 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     20       5    0.818  0.0740        0.685        0.977
   24     13       4    0.643  0.0974        0.478        0.866
   36     11       1    0.594  0.1017        0.425        0.831
   48     11       0    0.594  0.1017        0.425        0.831
   60      7       1    0.528  0.1098        0.351        0.794

                INSURANCE_F=Medicaid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     51       8    0.868  0.0435        0.787        0.958
   24     45       5    0.782  0.0535        0.684        0.895
   36     35       2    0.745  0.0572        0.641        0.866
   48     31       0    0.745  0.0572        0.641        0.866
   60     28       0    0.745  0.0572        0.641        0.866
  120      6       1    0.709  0.0645        0.594        0.848

                INSURANCE_F=Medicare 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    330      65    0.844  0.0178        0.809        0.879
   24    274      34    0.753  0.0216        0.712        0.797
   36    219      20    0.695  0.0236        0.650        0.743
   48    186      13    0.652  0.0250        0.604        0.702
   60    151      15    0.595  0.0268        0.545        0.650
  120     29      36    0.373  0.0369        0.308        0.453

                INSURANCE_F=Other Government 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     14       0    1.000   0.000        1.000            1
   24     14       0    1.000   0.000        1.000            1
   36     10       0    1.000   0.000        1.000            1
   48      9       0    1.000   0.000        1.000            1
   60      7       1    0.889   0.105        0.706            1
  120      1       0    0.889   0.105        0.706            1

                INSURANCE_F=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     22       4    0.857  0.0661        0.737        0.997
   24     20       0    0.857  0.0661        0.737        0.997
   36     18       0    0.857  0.0661        0.737        0.997
   48     16       0    0.857  0.0661        0.737        0.997
   60     14       0    0.857  0.0661        0.737        0.997
  120      4       1    0.791  0.0880        0.636        0.984




   
## Univariable Cox Proportional Hazard Model for:  INSURANCE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

  n= 1180, number of events= 300 

                               coef exp(coef) se(coef)      z Pr(>|z|)    
INSURANCE_FNone              1.5336    4.6349   0.3228  4.751 2.03e-06 ***
INSURANCE_FMedicaid          0.7588    2.1356   0.2742  2.767  0.00565 ** 
INSURANCE_FMedicare          1.4409    4.2247   0.1344 10.718  < 2e-16 ***
INSURANCE_FOther Government -0.6499    0.5221   1.0065 -0.646  0.51849    
INSURANCE_FUnknown           0.3298    1.3907   0.4612  0.715  0.47454    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                            exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone                4.6349     0.2158   2.46182     8.726
INSURANCE_FMedicaid            2.1356     0.4682   1.24777     3.655
INSURANCE_FMedicare            4.2247     0.2367   3.24608     5.498
INSURANCE_FOther Government    0.5221     1.9153   0.07262     3.754
INSURANCE_FUnknown             1.3907     0.7191   0.56320     3.434

Concordance= 0.67  (se = 0.016 )
Rsquare= 0.111   (max possible= 0.964 )
Likelihood ratio test= 138.7  on 5 df,   p=0
Wald test            = 123.7  on 5 df,   p=0
Score (logrank) test = 145.7  on 5 df,   p=0
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  INSURANCE_F

Overall Survival pre/post-ACA expansion

uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
   
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EXPN_GROUP, data = no_Excludes)

                             n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion  248     36     NA    82.8      NA
EXPN_GROUP=Pre-Expansion  1137    303    142   128.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EXPN_GROUP, data = no_Excludes)

                EXPN_GROUP=Post-Expansion 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    206       8    0.965  0.0121        0.942        0.989
   24    144      16    0.882  0.0229        0.838        0.928
   36     79       6    0.838  0.0280        0.785        0.894
   48     52       3    0.797  0.0351        0.731        0.869
   60     33       1    0.780  0.0384        0.708        0.859

                EXPN_GROUP=Pre-Expansion 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12   1000      41    0.962 0.00580        0.951        0.974
   24    900      41    0.921 0.00835        0.905        0.938
   36    799      34    0.885 0.01009        0.865        0.905
   48    683      33    0.846 0.01167        0.824        0.870
   60    568      44    0.789 0.01376        0.762        0.816
  120    125      94    0.586 0.02213        0.545        0.631




   
## Univariable Cox Proportional Hazard Model for:  EXPN_GROUP

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EXPN_GROUP, data = no_Excludes)

  n= 1385, number of events= 339 

                           coef exp(coef) se(coef)      z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.2137    0.8076   0.1815 -1.178    0.239

                        exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion    0.8076      1.238    0.5659     1.153

Concordance= 0.514  (se = 0.01 )
Rsquare= 0.001   (max possible= 0.958 )
Likelihood ratio test= 1.32  on 1 df,   p=0.2507
Wald test            = 1.39  on 1 df,   p=0.239
Score (logrank) test = 1.39  on 1 df,   p=0.2381





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  EXPN_GROUP

Education

uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
   
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

   10 observations deleted due to missingness 
                           n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more  152     52     NA    93.3      NA
EDUCATION_F=13 - 20.9%   266     74    140   130.6      NA
EDUCATION_F=7 - 12.9%    433    108     NA   127.9      NA
EDUCATION_F=Less than 7% 319     65     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

10 observations deleted due to missingness 
                EDUCATION_F=21% or more 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    123      18    0.879  0.0267        0.828        0.933
   24     99      13    0.783  0.0347        0.717        0.854
   36     86       7    0.726  0.0382        0.655        0.805
   48     78       0    0.726  0.0382        0.655        0.805
   60     68       3    0.697  0.0402        0.623        0.781
  120     12      11    0.523  0.0586        0.420        0.652

                EDUCATION_F=13 - 20.9% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    214      26    0.897  0.0192        0.860        0.935
   24    190       9    0.857  0.0224        0.814        0.902
   36    162       9    0.814  0.0254        0.766        0.866
   48    139       6    0.782  0.0276        0.730        0.838
   60    116       7    0.741  0.0303        0.684        0.803
  120     34      14    0.606  0.0428        0.527        0.695

                EDUCATION_F=7 - 12.9% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    355      38    0.909  0.0141        0.882        0.937
   24    300      25    0.842  0.0183        0.807        0.879
   36    259       4    0.830  0.0190        0.794        0.868
   48    221      11    0.793  0.0212        0.752        0.836
   60    189       8    0.762  0.0230        0.718        0.809
  120     46      19    0.641  0.0335        0.578        0.710

                EDUCATION_F=Less than 7% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    273      23    0.926  0.0149        0.897        0.955
   24    229      15    0.872  0.0194        0.835        0.911
   36    195       8    0.841  0.0217        0.799        0.884
   48    172       3    0.827  0.0228        0.783        0.873
   60    138       5    0.800  0.0250        0.753        0.851
  120     30      10    0.703  0.0384        0.631        0.782




   
## Univariable Cox Proportional Hazard Model for:  EDUCATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

  n= 1170, number of events= 299 
   (10 observations deleted due to missingness)

                           coef exp(coef) se(coef)      z Pr(>|z|)   
EDUCATION_F13 - 20.9%   -0.2675    0.7653   0.1811 -1.477  0.13962   
EDUCATION_F7 - 12.9%    -0.3522    0.7031   0.1689 -2.086  0.03699 * 
EDUCATION_FLess than 7% -0.5622    0.5700   0.1861 -3.021  0.00252 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                        exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9%      0.7653      1.307    0.5367    1.0914
EDUCATION_F7 - 12.9%       0.7031      1.422    0.5050    0.9790
EDUCATION_FLess than 7%    0.5700      1.755    0.3958    0.8208

Concordance= 0.545  (se = 0.017 )
Rsquare= 0.008   (max possible= 0.965 )
Likelihood ratio test= 9.21  on 3 df,   p=0.02658
Wald test            = 9.44  on 3 df,   p=0.02392
Score (logrank) test = 9.58  on 3 df,   p=0.02246
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  EDUCATION_F

Urban/Rural

uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
   
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

   34 observations deleted due to missingness 
              n events median 0.95LCL 0.95UCL
U_R_F=Metro 980    248     NA      NA      NA
U_R_F=Urban 153     41     NA   140.2      NA
U_R_F=Rural  13      4    118    41.1      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

34 observations deleted due to missingness 
                U_R_F=Metro 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    809      87    0.908 0.00942        0.890        0.927
   24    684      54    0.845 0.01207        0.821        0.869
   36    589      21    0.818 0.01306        0.792        0.844
   48    508      19    0.790 0.01410        0.762        0.818
   60    422      17    0.761 0.01520        0.732        0.791
  120     98      45    0.630 0.02287        0.587        0.677

                U_R_F=Urban 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    127      14    0.907  0.0238        0.861        0.954
   24    109       7    0.854  0.0295        0.798        0.914
   36     92       6    0.805  0.0340        0.741        0.875
   48     84       0    0.805  0.0340        0.741        0.875
   60     72       5    0.756  0.0383        0.685        0.835
  120     22       7    0.658  0.0486        0.570        0.761

                U_R_F=Rural 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.909  0.0867        0.754            1
   24      9       1    0.818  0.1163        0.619            1
   36      8       0    0.818  0.1163        0.619            1
   48      6       1    0.716  0.1397        0.488            1
   60      6       0    0.716  0.1397        0.488            1
  120      2       1    0.477  0.2159        0.197            1




   
## Univariable Cox Proportional Hazard Model for:  U_R_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

  n= 1146, number of events= 293 
   (34 observations deleted due to missingness)

                coef exp(coef)  se(coef)      z Pr(>|z|)
U_R_FUrban -0.005283  0.994731  0.168739 -0.031    0.975
U_R_FRural  0.138247  1.148259  0.504159  0.274    0.784

           exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban    0.9947     1.0053    0.7146     1.385
U_R_FRural    1.1483     0.8709    0.4275     3.084

Concordance= 0.5  (se = 0.011 )
Rsquare= 0   (max possible= 0.964 )
Likelihood ratio test= 0.07  on 2 df,   p=0.9637
Wald test            = 0.08  on 2 df,   p=0.9621
Score (logrank) test = 0.08  on 2 df,   p=0.9621
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  U_R_F

Class (treatment at performing facility)

uni_var(test_var = "CLASS_OF_CASE_F", data_imp = data)
_________________________________________________
   
## CLASS_OF_CASE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

                                  n events median 0.95LCL 0.95UCL
CLASS_OF_CASE_F=Other_Facility   69     16     NA    77.1      NA
CLASS_OF_CASE_F=All_Part_Prim  1111    284     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

                CLASS_OF_CASE_F=Other_Facility 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     45       7    0.881  0.0424        0.802        0.968
   24     40       4    0.802  0.0539        0.703        0.915
   36     34       0    0.802  0.0539        0.703        0.915
   48     31       0    0.802  0.0539        0.703        0.915
   60     21       1    0.775  0.0587        0.668        0.899
  120      3       4    0.577  0.0969        0.415        0.802

                CLASS_OF_CASE_F=All_Part_Prim 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    925      99    0.908 0.00882        0.891        0.925
   24    782      58    0.848 0.01119        0.827        0.871
   36    672      28    0.817 0.01228        0.793        0.841
   48    583      20    0.791 0.01316        0.766        0.817
   60    493      22    0.759 0.01428        0.732        0.788
  120    121      50    0.636 0.02092        0.597        0.679




   
## Univariable Cox Proportional Hazard Model for:  CLASS_OF_CASE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

  n= 1180, number of events= 300 

                                coef exp(coef) se(coef)      z Pr(>|z|)
CLASS_OF_CASE_FAll_Part_Prim -0.1538    0.8574   0.2571 -0.598     0.55

                             exp(coef) exp(-coef) lower .95 upper .95
CLASS_OF_CASE_FAll_Part_Prim    0.8574      1.166     0.518     1.419

Concordance= 0.504  (se = 0.007 )
Rsquare= 0   (max possible= 0.964 )
Likelihood ratio test= 0.34  on 1 df,   p=0.5587
Wald test            = 0.36  on 1 df,   p=0.5497
Score (logrank) test = 0.36  on 1 df,   p=0.5493
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  CLASS_OF_CASE_F

Year

uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
   
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

                         n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004  97     36     NA   110.5      NA
YEAR_OF_DIAGNOSIS=2005  94     35  140.2   117.9      NA
YEAR_OF_DIAGNOSIS=2006  92     26     NA      NA      NA
YEAR_OF_DIAGNOSIS=2007 109     31     NA      NA      NA
YEAR_OF_DIAGNOSIS=2008 101     19     NA      NA      NA
YEAR_OF_DIAGNOSIS=2009 120     38     NA      NA      NA
YEAR_OF_DIAGNOSIS=2010 119     31   93.9    91.7      NA
YEAR_OF_DIAGNOSIS=2011  90     21     NA      NA      NA
YEAR_OF_DIAGNOSIS=2012  86     23     NA      NA      NA
YEAR_OF_DIAGNOSIS=2013  87     17     NA      NA      NA
YEAR_OF_DIAGNOSIS=2014  87     13     NA      NA      NA
YEAR_OF_DIAGNOSIS=2015  98     10     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

                YEAR_OF_DIAGNOSIS=2004 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     82       6    0.934  0.0260        0.885        0.987
   24     70       7    0.852  0.0379        0.781        0.930
   36     66       4    0.804  0.0428        0.724        0.892
   48     63       2    0.779  0.0449        0.696        0.872
   60     60       3    0.742  0.0476        0.655        0.842
  120     40      12    0.588  0.0548        0.490        0.706

                YEAR_OF_DIAGNOSIS=2005 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     77       9    0.901  0.0315        0.841        0.964
   24     70       7    0.819  0.0411        0.742        0.903
   36     68       2    0.795  0.0431        0.715        0.884
   48     66       0    0.795  0.0431        0.715        0.884
   60     62       2    0.770  0.0452        0.687        0.864
  120     33      12    0.588  0.0578        0.485        0.713

                YEAR_OF_DIAGNOSIS=2006 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     78       9    0.900  0.0318        0.839        0.964
   24     68       5    0.840  0.0392        0.767        0.921
   36     65       2    0.816  0.0418        0.738        0.902
   48     63       2    0.791  0.0441        0.709        0.882
   60     62       0    0.791  0.0441        0.709        0.882
  120     39       6    0.704  0.0515        0.610        0.813

                YEAR_OF_DIAGNOSIS=2007 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     83      17    0.838  0.0361        0.770        0.912
   24     76       4    0.797  0.0397        0.723        0.879
   36     74       1    0.787  0.0405        0.711        0.870
   48     70       2    0.765  0.0422        0.686        0.852
   60     63       2    0.743  0.0438        0.662        0.834
  120     12       5    0.679  0.0484        0.591        0.781

                YEAR_OF_DIAGNOSIS=2008 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     82       6    0.939  0.0242        0.892        0.988
   24     75       3    0.903  0.0308        0.845        0.966
   36     68       4    0.855  0.0375        0.785        0.932
   48     66       0    0.855  0.0375        0.785        0.932
   60     60       1    0.842  0.0391        0.768        0.922

                YEAR_OF_DIAGNOSIS=2009 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    109       8    0.933  0.0230        0.889        0.979
   24     97       9    0.854  0.0327        0.793        0.921
   36     90       3    0.827  0.0352        0.761        0.899
   48     85       5    0.781  0.0388        0.709        0.861
   60     77       4    0.743  0.0413        0.667        0.829

                YEAR_OF_DIAGNOSIS=2010 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    104      11    0.905  0.0272        0.854        0.960
   24     94       5    0.860  0.0325        0.799        0.926
   36     86       4    0.822  0.0361        0.755        0.896
   48     77       3    0.792  0.0387        0.720        0.872
   60     68       3    0.760  0.0414        0.683        0.846

                YEAR_OF_DIAGNOSIS=2011 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     77       7    0.919  0.0295        0.863        0.978
   24     70       5    0.858  0.0381        0.786        0.936
   36     66       2    0.833  0.0408        0.757        0.917
   48     61       2    0.807  0.0436        0.726        0.897
   60     47       5    0.736  0.0500        0.644        0.841

                YEAR_OF_DIAGNOSIS=2012 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     66      11    0.865  0.0380        0.793        0.943
   24     54       5    0.794  0.0462        0.708        0.890
   36     46       3    0.749  0.0504        0.657        0.855
   48     38       1    0.732  0.0521        0.636        0.841
   60     15       3    0.635  0.0699        0.511        0.787

                YEAR_OF_DIAGNOSIS=2013 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     74       5    0.940  0.0259        0.891        0.993
   24     61       7    0.846  0.0411        0.769        0.931
   36     55       2    0.818  0.0442        0.736        0.910
   48     25       3    0.765  0.0511        0.671        0.872

                YEAR_OF_DIAGNOSIS=2014 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     64      10    0.881  0.0354        0.814        0.953
   24     51       2    0.850  0.0403        0.775        0.933
   36     22       1    0.834  0.0428        0.754        0.922

                YEAR_OF_DIAGNOSIS=2015 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     74       7    0.924  0.0278        0.871        0.980
   24     36       3    0.880  0.0364        0.811        0.954




   
## Univariable Cox Proportional Hazard Model for:  YEAR_OF_DIAGNOSIS

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

  n= 1180, number of events= 300 

                          coef exp(coef) se(coef)      z Pr(>|z|)  
YEAR_OF_DIAGNOSIS2005  0.02289   1.02315  0.23779  0.096    0.923  
YEAR_OF_DIAGNOSIS2006 -0.28353   0.75312  0.25847 -1.097    0.273  
YEAR_OF_DIAGNOSIS2007 -0.07593   0.92688  0.24813 -0.306    0.760  
YEAR_OF_DIAGNOSIS2008 -0.49876   0.60728  0.28678 -1.739    0.082 .
YEAR_OF_DIAGNOSIS2009  0.02013   1.02033  0.23765  0.085    0.933  
YEAR_OF_DIAGNOSIS2010 -0.07015   0.93225  0.25092 -0.280    0.780  
YEAR_OF_DIAGNOSIS2011 -0.09366   0.91059  0.28067 -0.334    0.739  
YEAR_OF_DIAGNOSIS2012  0.28652   1.33178  0.27426  1.045    0.296  
YEAR_OF_DIAGNOSIS2013 -0.03997   0.96082  0.30182 -0.132    0.895  
YEAR_OF_DIAGNOSIS2014 -0.10668   0.89881  0.33150 -0.322    0.748  
YEAR_OF_DIAGNOSIS2015 -0.36531   0.69398  0.36561 -0.999    0.318  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                      exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005    1.0232     0.9774    0.6420     1.631
YEAR_OF_DIAGNOSIS2006    0.7531     1.3278    0.4538     1.250
YEAR_OF_DIAGNOSIS2007    0.9269     1.0789    0.5699     1.507
YEAR_OF_DIAGNOSIS2008    0.6073     1.6467    0.3462     1.065
YEAR_OF_DIAGNOSIS2009    1.0203     0.9801    0.6404     1.626
YEAR_OF_DIAGNOSIS2010    0.9323     1.0727    0.5701     1.524
YEAR_OF_DIAGNOSIS2011    0.9106     1.0982    0.5253     1.578
YEAR_OF_DIAGNOSIS2012    1.3318     0.7509    0.7780     2.280
YEAR_OF_DIAGNOSIS2013    0.9608     1.0408    0.5318     1.736
YEAR_OF_DIAGNOSIS2014    0.8988     1.1126    0.4693     1.721
YEAR_OF_DIAGNOSIS2015    0.6940     1.4410    0.3390     1.421

Concordance= 0.536  (se = 0.018 )
Rsquare= 0.008   (max possible= 0.964 )
Likelihood ratio test= 9.56  on 11 df,   p=0.5705
Wald test            = 9.24  on 11 df,   p=0.6002
Score (logrank) test = 9.4  on 11 df,   p=0.5849
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.

Primary Site

uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
   
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

                                                            n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.0 Skin of lip, NOS                           11      2     NA    49.1      NA
SITE_TEXT=C44.1 Eyelid                                      5      0     NA      NA      NA
SITE_TEXT=C44.2 External ear                               11      1     NA      NA      NA
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 113     20     NA      NA      NA
SITE_TEXT=C44.4 Skin of scalp and neck                     66     14     NA    98.3      NA
SITE_TEXT=C44.5 Skin of trunk                             217     61     NA   117.9      NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder           199     40     NA   135.6      NA
SITE_TEXT=C44.7 Skin of lower limb and hip                207     59     NA   105.6      NA
SITE_TEXT=C44.8 Overlapping lesion of skin                 52     20     NA    41.4      NA
SITE_TEXT=C44.9 Skin, NOS                                 290     81     NA   127.3      NA
SITE_TEXT=C51.9 Vulva, NOS                                  3      1     NA    84.5      NA
SITE_TEXT=C52.9 Vagina, NOS                                 1      1   60.8      NA      NA
SITE_TEXT=C60.0 Prepuce                                     2      0     NA      NA      NA
SITE_TEXT=C60.9 Penis                                       3      0     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

                SITE_TEXT=C44.0 Skin of lip, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       0    1.000   0.000        1.000            1
   24      8       0    1.000   0.000        1.000            1
   36      6       1    0.857   0.132        0.633            1
   48      6       0    0.857   0.132        0.633            1
   60      3       1    0.686   0.186        0.403            1
  120      2       0    0.686   0.186        0.403            1

                SITE_TEXT=C44.1 Eyelid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0        1       0            1            1
   24      5       0        1       0            1            1
   36      5       0        1       0            1            1
   48      5       0        1       0            1            1
   60      5       0        1       0            1            1
  120      3       0        1       0            1            1

                SITE_TEXT=C44.2 External ear 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       1    0.909  0.0867        0.754            1
   24      8       0    0.909  0.0867        0.754            1
   36      6       0    0.909  0.0867        0.754            1
   48      6       0    0.909  0.0867        0.754            1
   60      4       0    0.909  0.0867        0.754            1
  120      2       0    0.909  0.0867        0.754            1

                SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     96       4    0.963  0.0181        0.928        0.999
   24     81       4    0.920  0.0274        0.867        0.975
   36     74       1    0.908  0.0295        0.852        0.968
   48     59       4    0.856  0.0376        0.785        0.933
   60     50       4    0.793  0.0461        0.708        0.889
  120     13       2    0.742  0.0563        0.640        0.861

                SITE_TEXT=C44.4 Skin of scalp and neck 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     54       6    0.906  0.0366        0.837        0.981
   24     46       2    0.872  0.0425        0.792        0.959
   36     37       1    0.852  0.0457        0.767        0.947
   48     33       0    0.852  0.0457        0.767        0.947
   60     29       1    0.825  0.0519        0.729        0.933
  120      6       4    0.640  0.0964        0.476        0.860

                SITE_TEXT=C44.5 Skin of trunk 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    176      22    0.894  0.0215        0.853        0.937
   24    154       7    0.856  0.0248        0.809        0.906
   36    138       6    0.822  0.0275        0.770        0.878
   48    126       4    0.797  0.0293        0.742        0.857
   60    105       7    0.752  0.0322        0.692        0.818
  120     22      15    0.581  0.0491        0.493        0.686

                SITE_TEXT=C44.6 Skin of upper limb and shoulder 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    173      10    0.948  0.0160        0.917        0.980
   24    149       8    0.902  0.0221        0.860        0.946
   36    126       4    0.876  0.0249        0.828        0.926
   48    110       4    0.846  0.0282        0.792        0.903
   60     98       1    0.838  0.0292        0.782        0.897
  120     25       9    0.729  0.0436        0.649        0.820

                SITE_TEXT=C44.7 Skin of lower limb and hip 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    171      19    0.905  0.0207        0.866        0.947
   24    140      17    0.811  0.0285        0.758        0.869
   36    119       6    0.775  0.0308        0.717        0.838
   48     98       4    0.746  0.0329        0.685        0.814
   60     76       3    0.719  0.0352        0.654        0.792
  120     16       9    0.560  0.0575        0.458        0.685

                SITE_TEXT=C44.8 Overlapping lesion of skin 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     40       8    0.840  0.0519        0.744        0.948
   24     28       8    0.670  0.0679        0.549        0.817
   36     24       1    0.643  0.0703        0.519        0.797
   48     20       1    0.616  0.0723        0.490        0.776
   60     18       1    0.586  0.0749        0.456        0.753
  120      4       1    0.537  0.0831        0.396        0.727

                SITE_TEXT=C44.9 Skin, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    229      36    0.871  0.0201        0.833        0.911
   24    196      16    0.808  0.0240        0.762        0.857
   36    164       8    0.774  0.0259        0.724        0.826
   48    144       3    0.759  0.0268        0.708        0.813
   60    120       5    0.731  0.0286        0.677        0.789
  120     31      12    0.612  0.0415        0.536        0.699

                SITE_TEXT=C51.9 Vulva, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       0        1       0            1            1
   24      3       0        1       0            1            1
   36      3       0        1       0            1            1
   48      3       0        1       0            1            1
   60      3       0        1       0            1            1

                SITE_TEXT=C52.9 Vagina, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                SITE_TEXT=C60.0 Prepuce 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      2       0        1       0            1            1
   36      2       0        1       0            1            1
   48      2       0        1       0            1            1
   60      1       0        1       0            1            1

                SITE_TEXT=C60.9 Penis 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  SITE_TEXT
Loglik converged before variable  1,12,13 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

  n= 1180, number of events= 300 

                                                               coef  exp(coef)   se(coef)      z Pr(>|z|)
SITE_TEXTC44.1 Eyelid                                    -1.471e+01  4.087e-07  1.224e+03 -0.012    0.990
SITE_TEXTC44.2 External ear                              -6.886e-01  5.023e-01  1.225e+00 -0.562    0.574
SITE_TEXTC44.3 Skin of ear and unspecified parts of face -4.419e-02  9.568e-01  7.417e-01 -0.060    0.952
SITE_TEXTC44.4 Skin of scalp and neck                     1.998e-01  1.221e+00  7.561e-01  0.264    0.792
SITE_TEXTC44.5 Skin of trunk                              4.298e-01  1.537e+00  7.188e-01  0.598    0.550
SITE_TEXTC44.6 Skin of upper limb and shoulder            4.494e-02  1.046e+00  7.247e-01  0.062    0.951
SITE_TEXTC44.7 Skin of lower limb and hip                 5.264e-01  1.693e+00  7.191e-01  0.732    0.464
SITE_TEXTC44.8 Overlapping lesion of skin                 9.256e-01  2.523e+00  7.418e-01  1.248    0.212
SITE_TEXTC44.9 Skin, NOS                                  4.618e-01  1.587e+00  7.159e-01  0.645    0.519
SITE_TEXTC51.9 Vulva, NOS                                 1.939e-01  1.214e+00  1.225e+00  0.158    0.874
SITE_TEXTC52.9 Vagina, NOS                                1.632e+00  5.114e+00  1.225e+00  1.332    0.183
SITE_TEXTC60.0 Prepuce                                   -1.470e+01  4.124e-07  2.538e+03 -0.006    0.995
SITE_TEXTC60.9 Penis                                     -1.470e+01  4.131e-07  2.524e+03 -0.006    0.995

                                                         exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC44.1 Eyelid                                    4.087e-07  2.447e+06   0.00000       Inf
SITE_TEXTC44.2 External ear                              5.023e-01  1.991e+00   0.04554     5.539
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 9.568e-01  1.045e+00   0.22358     4.094
SITE_TEXTC44.4 Skin of scalp and neck                    1.221e+00  8.189e-01   0.27748     5.375
SITE_TEXTC44.5 Skin of trunk                             1.537e+00  6.506e-01   0.37570     6.288
SITE_TEXTC44.6 Skin of upper limb and shoulder           1.046e+00  9.561e-01   0.25273     4.329
SITE_TEXTC44.7 Skin of lower limb and hip                1.693e+00  5.907e-01   0.41349     6.930
SITE_TEXTC44.8 Overlapping lesion of skin                2.523e+00  3.963e-01   0.58959    10.799
SITE_TEXTC44.9 Skin, NOS                                 1.587e+00  6.301e-01   0.39008     6.456
SITE_TEXTC51.9 Vulva, NOS                                1.214e+00  8.237e-01   0.10997    13.402
SITE_TEXTC52.9 Vagina, NOS                               5.114e+00  1.955e-01   0.46322    56.467
SITE_TEXTC60.0 Prepuce                                   4.124e-07  2.425e+06   0.00000       Inf
SITE_TEXTC60.9 Penis                                     4.131e-07  2.421e+06   0.00000       Inf

Concordance= 0.582  (se = 0.018 )
Rsquare= 0.022   (max possible= 0.964 )
Likelihood ratio test= 26.34  on 13 df,   p=0.01529
Wald test            = 19.39  on 13 df,   p=0.1114
Score (logrank) test = 23.94  on 13 df,   p=0.03166
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SITE_TEXT
This manual palette can handle a maximum of 10 values. You have supplied 14.

Histology

#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)

Grade

#uni_var(test_var = "GRADE_F", data_imp = data)

Clinical T Stage

uni_var(test_var = "TNM_CLIN_T", data_imp = data)
_________________________________________________
   
## TNM_CLIN_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

   18 observations deleted due to missingness 
                  n events median 0.95LCL 0.95UCL
TNM_CLIN_T=N_A 1161    293     NA      NA      NA
TNM_CLIN_T=cX     1      0     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

18 observations deleted due to missingness 
                TNM_CLIN_T=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    955     103    0.908 0.00868        0.891        0.925
   24    809      60    0.848 0.01101        0.827        0.870
   36    696      27    0.818 0.01201        0.795        0.842
   48    604      20    0.794 0.01287        0.769        0.819
   60    506      22    0.763 0.01396        0.736        0.791
  120    124      54    0.636 0.02059        0.596        0.677

                TNM_CLIN_T=cX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_T
Loglik converged before variable  1 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

  n= 1162, number of events= 293 
   (18 observations deleted due to missingness)

                   coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_CLIN_TcX -1.300e+01  2.256e-06  1.223e+03 -0.011    0.992

             exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_TcX 2.256e-06     443332         0       Inf

Concordance= 0.501  (se = 0.001 )
Rsquare= 0.001   (max possible= 0.963 )
Likelihood ratio test= 0.59  on 1 df,   p=0.4416
Wald test            = 0  on 1 df,   p=0.9915
Score (logrank) test = 0.3  on 1 df,   p=0.5862
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_T

Clinical N Stage

uni_var(test_var = "TNM_CLIN_N", data_imp = data)
_________________________________________________
   
## TNM_CLIN_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

   18 observations deleted due to missingness 
                  n events median 0.95LCL 0.95UCL
TNM_CLIN_N=N_A 1161    293     NA      NA      NA
TNM_CLIN_N=cX     1      0     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

18 observations deleted due to missingness 
                TNM_CLIN_N=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    955     103    0.908 0.00868        0.891        0.925
   24    809      60    0.848 0.01101        0.827        0.870
   36    696      27    0.818 0.01201        0.795        0.842
   48    604      20    0.794 0.01287        0.769        0.819
   60    506      22    0.763 0.01396        0.736        0.791
  120    124      54    0.636 0.02059        0.596        0.677

                TNM_CLIN_N=cX 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_N
Loglik converged before variable  1 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

  n= 1162, number of events= 293 
   (18 observations deleted due to missingness)

                   coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_CLIN_NcX -1.300e+01  2.256e-06  1.223e+03 -0.011    0.992

             exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_NcX 2.256e-06     443332         0       Inf

Concordance= 0.501  (se = 0.001 )
Rsquare= 0.001   (max possible= 0.963 )
Likelihood ratio test= 0.59  on 1 df,   p=0.4416
Wald test            = 0  on 1 df,   p=0.9915
Score (logrank) test = 0.3  on 1 df,   p=0.5862
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_N

Clinical Stage Group

uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
   
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

   1 observation deleted due to missingness 
                           n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=1   340     63     NA      NA      NA
TNM_CLIN_STAGE_GROUP=1A  394     67     NA  140.22      NA
TNM_CLIN_STAGE_GROUP=1B   14      4     NA   24.71      NA
TNM_CLIN_STAGE_GROUP=2    24      7     NA   51.35      NA
TNM_CLIN_STAGE_GROUP=2A   32      9     NA   53.36      NA
TNM_CLIN_STAGE_GROUP=2B   12      6   63.9   26.05      NA
TNM_CLIN_STAGE_GROUP=3    11      4   74.1   42.18      NA
TNM_CLIN_STAGE_GROUP=3A    8      1     NA      NA      NA
TNM_CLIN_STAGE_GROUP=3B    3      0     NA      NA      NA
TNM_CLIN_STAGE_GROUP=4    56     39   24.1   14.23    76.7
TNM_CLIN_STAGE_GROUP=4A   38     22   30.3   14.32      NA
TNM_CLIN_STAGE_GROUP=4B   18     13   12.3    9.23      NA
TNM_CLIN_STAGE_GROUP=N_A   2      0     NA      NA      NA
TNM_CLIN_STAGE_GROUP=99  227     65     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

1 observation deleted due to missingness 
                TNM_CLIN_STAGE_GROUP=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    291      19    0.943  0.0127        0.918        0.968
   24    256      14    0.895  0.0173        0.862        0.930
   36    226       5    0.877  0.0188        0.841        0.915
   48    210       4    0.861  0.0201        0.823        0.901
   60    178       3    0.848  0.0212        0.807        0.890
  120     43      15    0.741  0.0326        0.680        0.808

                TNM_CLIN_STAGE_GROUP=1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    340      16    0.957  0.0105        0.937        0.978
   24    295       9    0.931  0.0134        0.905        0.957
   36    254       5    0.914  0.0151        0.885        0.944
   48    202       7    0.887  0.0177        0.853        0.923
   60    162      12    0.831  0.0228        0.788        0.877
  120     33      14    0.711  0.0382        0.640        0.790

                TNM_CLIN_STAGE_GROUP=1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       2    0.857  0.0935        0.692            1
   24      8       1    0.771  0.1170        0.573            1
   36      5       1    0.675  0.1365        0.454            1
   48      4       0    0.675  0.1365        0.454            1
   60      4       0    0.675  0.1365        0.454            1
  120      2       0    0.675  0.1365        0.454            1

                TNM_CLIN_STAGE_GROUP=2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     19       2    0.910  0.0607        0.799        1.000
   24     15       2    0.809  0.0868        0.655        0.998
   36     12       1    0.751  0.0980        0.581        0.970
   48     10       1    0.688  0.1080        0.506        0.936
   60      9       1    0.619  0.1171        0.428        0.897
  120      1       0    0.619  0.1171        0.428        0.897

                TNM_CLIN_STAGE_GROUP=2A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     26       4    0.870  0.0609        0.758        0.998
   24     21       3    0.763  0.0785        0.624        0.934
   36     17       0    0.763  0.0785        0.624        0.934
   48     14       0    0.763  0.0785        0.624        0.934
   60     11       2    0.646  0.1013        0.475        0.878
  120      2       0    0.646  0.1013        0.475        0.878

                TNM_CLIN_STAGE_GROUP=2B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       1    0.917  0.0798        0.773        1.000
   24      9       2    0.750  0.1250        0.541        1.000
   36      5       2    0.547  0.1537        0.315        0.949
   48      4       0    0.547  0.1537        0.315        0.949
   60      3       0    0.547  0.1537        0.315        0.949

                TNM_CLIN_STAGE_GROUP=3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       0    1.000   0.000        1.000            1
   24      6       2    0.787   0.134        0.564            1
   36      6       0    0.787   0.134        0.564            1
   48      5       1    0.656   0.164        0.402            1
   60      5       0    0.656   0.164        0.402            1

                TNM_CLIN_STAGE_GROUP=3A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       0    1.000   0.000        1.000            1
   24      7       0    1.000   0.000        1.000            1
   36      5       1    0.833   0.152        0.583            1
   48      4       0    0.833   0.152        0.583            1
   60      4       0    0.833   0.152        0.583            1
  120      2       0    0.833   0.152        0.583            1

                TNM_CLIN_STAGE_GROUP=3B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1

                TNM_CLIN_STAGE_GROUP=4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     34      20    0.638  0.0648       0.5231        0.779
   24     25       7    0.503  0.0684       0.3849        0.656
   36     17       4    0.419  0.0687       0.3034        0.577
   48     16       0    0.419  0.0687       0.3034        0.577
   60     14       1    0.391  0.0696       0.2755        0.554
  120      2       7    0.130  0.0695       0.0455        0.371

                TNM_CLIN_STAGE_GROUP=4A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     25      10    0.731  0.0730        0.601        0.889
   24     16       5    0.583  0.0829        0.441        0.771
   36     12       3    0.471  0.0888        0.325        0.682
   48     10       1    0.428  0.0905        0.283        0.648
   60      8       2    0.343  0.0904        0.204        0.575
  120      3       1    0.300  0.0887        0.168        0.535

                TNM_CLIN_STAGE_GROUP=4B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       9    0.500   0.118        0.315        0.794
   24      7       2    0.389   0.115        0.218        0.694
   36      6       1    0.333   0.111        0.173        0.641
   48      5       1    0.278   0.106        0.132        0.585
   60      3       0    0.278   0.106        0.132        0.585
  120      1       0    0.278   0.106        0.132        0.585

                TNM_CLIN_STAGE_GROUP=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      2       0        1       0            1            1
   36      2       0        1       0            1            1
   48      2       0        1       0            1            1
   60      2       0        1       0            1            1

                TNM_CLIN_STAGE_GROUP=99 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    182      23    0.893  0.0211        0.853        0.936
   24    153      15    0.816  0.0270        0.765        0.871
   36    137       5    0.789  0.0288        0.735        0.847
   48    126       5    0.759  0.0306        0.702        0.822
   60    111       2    0.746  0.0315        0.687        0.810
  120     35      15    0.592  0.0454        0.510        0.689




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_STAGE_GROUP
Loglik converged before variable  8,12 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

  n= 1179, number of events= 300 
   (1 observation deleted due to missingness)

                              coef  exp(coef)   se(coef)      z Pr(>|z|)    
TNM_CLIN_STAGE_GROUP1A   1.632e-02  1.016e+00  1.758e-01  0.093  0.92604    
TNM_CLIN_STAGE_GROUP1B   7.209e-01  2.056e+00  5.158e-01  1.398  0.16225    
TNM_CLIN_STAGE_GROUP2    6.541e-01  1.924e+00  3.986e-01  1.641  0.10075    
TNM_CLIN_STAGE_GROUP2A   6.312e-01  1.880e+00  3.566e-01  1.770  0.07675 .  
TNM_CLIN_STAGE_GROUP2B   1.396e+00  4.038e+00  4.288e-01  3.255  0.00113 ** 
TNM_CLIN_STAGE_GROUP3    8.220e-01  2.275e+00  5.158e-01  1.593  0.11106    
TNM_CLIN_STAGE_GROUP3A  -4.375e-01  6.456e-01  1.008e+00 -0.434  0.66424    
TNM_CLIN_STAGE_GROUP3B  -1.420e+01  6.804e-07  2.234e+03 -0.006  0.99493    
TNM_CLIN_STAGE_GROUP4    1.824e+00  6.197e+00  2.046e-01  8.915  < 2e-16 ***
TNM_CLIN_STAGE_GROUP4A   1.613e+00  5.020e+00  2.486e-01  6.490 8.57e-11 ***
TNM_CLIN_STAGE_GROUP4B   1.937e+00  6.936e+00  3.057e-01  6.336 2.36e-10 ***
TNM_CLIN_STAGE_GROUPN_A -1.422e+01  6.687e-07  1.944e+03 -0.007  0.99416    
TNM_CLIN_STAGE_GROUP99   4.756e-01  1.609e+00  1.769e-01  2.689  0.00716 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                        exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1A  1.016e+00  9.838e-01   0.72019     1.435
TNM_CLIN_STAGE_GROUP1B  2.056e+00  4.863e-01   0.74818     5.651
TNM_CLIN_STAGE_GROUP2   1.924e+00  5.199e-01   0.88069     4.201
TNM_CLIN_STAGE_GROUP2A  1.880e+00  5.320e-01   0.93445     3.782
TNM_CLIN_STAGE_GROUP2B  4.038e+00  2.476e-01   1.74266     9.358
TNM_CLIN_STAGE_GROUP3   2.275e+00  4.396e-01   0.82773     6.253
TNM_CLIN_STAGE_GROUP3A  6.456e-01  1.549e+00   0.08954     4.656
TNM_CLIN_STAGE_GROUP3B  6.804e-07  1.470e+06   0.00000       Inf
TNM_CLIN_STAGE_GROUP4   6.197e+00  1.614e-01   4.14953     9.254
TNM_CLIN_STAGE_GROUP4A  5.020e+00  1.992e-01   3.08383     8.171
TNM_CLIN_STAGE_GROUP4B  6.936e+00  1.442e-01   3.80993    12.627
TNM_CLIN_STAGE_GROUPN_A 6.687e-07  1.495e+06   0.00000       Inf
TNM_CLIN_STAGE_GROUP99  1.609e+00  6.215e-01   1.13766     2.276

Concordance= 0.663  (se = 0.017 )
Rsquare= 0.101   (max possible= 0.964 )
Likelihood ratio test= 125.3  on 13 df,   p=0
Wald test            = 153.4  on 13 df,   p=0
Score (logrank) test = 191.2  on 13 df,   p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 14.

Pathologic T Stage

uni_var(test_var = "TNM_PATH_T", data_imp = data)
_________________________________________________
   
## TNM_PATH_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

   39 observations deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
   1141     289      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

39 observations deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    939     101    0.908 0.00875        0.891        0.925
   24    799      59    0.848 0.01110        0.827        0.870
   36    689      27    0.818 0.01211        0.795        0.842
   48    599      20    0.793 0.01298        0.768        0.819
   60    505      21    0.764 0.01401        0.737        0.792
  120    124      54    0.636 0.02063        0.597        0.678



   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_T

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_T

Pathologic N Stage

uni_var(test_var = "TNM_PATH_N", data_imp = data)
_________________________________________________
   
## TNM_PATH_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

   39 observations deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
   1141     289      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

39 observations deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    939     101    0.908 0.00875        0.891        0.925
   24    799      59    0.848 0.01110        0.827        0.870
   36    689      27    0.818 0.01211        0.795        0.842
   48    599      20    0.793 0.01298        0.768        0.819
   60    505      21    0.764 0.01401        0.737        0.792
  120    124      54    0.636 0.02063        0.597        0.678



   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_N

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_N

Pathologic M Stage

uni_var(test_var = "TNM_PATH_M", data_imp = data)
_________________________________________________
   
## TNM_PATH_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

   74 observations deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
   1106     287      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

74 observations deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    912      99    0.907 0.00891        0.890        0.925
   24    774      59    0.846 0.01134        0.824        0.868
   36    671      27    0.815 0.01238        0.791        0.839
   48    588      20    0.789 0.01324        0.764        0.816
   60    494      21    0.759 0.01427        0.732        0.788
  120    124      54    0.632 0.02071        0.593        0.674



   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_M

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_M

Pathologic Stage Group

uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
   
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

   87 observations deleted due to missingness 
                           n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=1   116     27     NA  130.56      NA
TNM_PATH_STAGE_GROUP=1A  116     25     NA  127.31      NA
TNM_PATH_STAGE_GROUP=1B    9      3     NA   19.02      NA
TNM_PATH_STAGE_GROUP=2    12      3     NA   25.72      NA
TNM_PATH_STAGE_GROUP=2A    7      2     NA   53.36      NA
TNM_PATH_STAGE_GROUP=2B    4      1     NA   14.55      NA
TNM_PATH_STAGE_GROUP=3     6      2     NA   74.12      NA
TNM_PATH_STAGE_GROUP=3A    1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=4    22     16   10.8    5.32      NA
TNM_PATH_STAGE_GROUP=4A   16     11   13.8    8.38      NA
TNM_PATH_STAGE_GROUP=4B    6      5   10.2    9.23      NA
TNM_PATH_STAGE_GROUP=N_A   1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=99  777    188     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

87 observations deleted due to missingness 
                TNM_PATH_STAGE_GROUP=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     93       7    0.936  0.0234        0.891        0.983
   24     82       5    0.884  0.0317        0.824        0.948
   36     74       1    0.873  0.0331        0.810        0.940
   48     71       2    0.849  0.0362        0.781        0.923
   60     66       1    0.837  0.0376        0.767        0.914
  120     18       9    0.687  0.0559        0.586        0.806

                TNM_PATH_STAGE_GROUP=1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    101       4    0.964  0.0178        0.929        0.999
   24     88       5    0.914  0.0275        0.861        0.969
   36     79       3    0.882  0.0322        0.821        0.947
   48     65       3    0.846  0.0369        0.777        0.922
   60     48       6    0.764  0.0462        0.678        0.860
  120     13       3    0.687  0.0601        0.579        0.816

                TNM_PATH_STAGE_GROUP=1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       2    0.778   0.139        0.549            1
   24      5       1    0.648   0.165        0.393            1
   36      5       0    0.648   0.165        0.393            1
   48      3       0    0.648   0.165        0.393            1
   60      3       0    0.648   0.165        0.393            1
  120      1       0    0.648   0.165        0.393            1

                TNM_PATH_STAGE_GROUP=2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.909  0.0867        0.754            1
   24      8       1    0.818  0.1163        0.619            1
   36      6       1    0.716  0.1397        0.488            1
   48      6       0    0.716  0.1397        0.488            1
   60      6       0    0.716  0.1397        0.488            1
  120      1       0    0.716  0.1397        0.488            1

                TNM_PATH_STAGE_GROUP=2A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       1    0.857   0.132        0.633            1
   24      6       0    0.857   0.132        0.633            1
   36      6       0    0.857   0.132        0.633            1
   48      5       0    0.857   0.132        0.633            1
   60      4       1    0.686   0.186        0.403            1
  120      1       0    0.686   0.186        0.403            1

                TNM_PATH_STAGE_GROUP=2B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0     1.00   0.000        1.000            1
   24      3       1     0.75   0.217        0.426            1
   36      3       0     0.75   0.217        0.426            1
   48      2       0     0.75   0.217        0.426            1
   60      1       0     0.75   0.217        0.426            1

                TNM_PATH_STAGE_GROUP=3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       0      1.0   0.000        1.000            1
   24      5       0      1.0   0.000        1.000            1
   36      4       1      0.8   0.179        0.516            1
   48      4       0      0.8   0.179        0.516            1
   60      4       0      0.8   0.179        0.516            1

                TNM_PATH_STAGE_GROUP=3A 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI

                TNM_PATH_STAGE_GROUP=4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10      12    0.455  0.1062        0.288        0.718
   24      9       1    0.409  0.1048        0.248        0.676
   36      6       2    0.318  0.0993        0.173        0.587
   48      6       0    0.318  0.0993        0.173        0.587
   60      5       0    0.318  0.0993        0.173        0.587
  120      1       1    0.159  0.1230        0.035        0.724

                TNM_PATH_STAGE_GROUP=4A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       5    0.666   0.123       0.4642        0.957
   24      4       4    0.333   0.133       0.1525        0.728
   36      3       1    0.250   0.123       0.0952        0.656
   48      3       0    0.250   0.123       0.0952        0.656
   60      2       1    0.167   0.107       0.0476        0.583
  120      1       0    0.167   0.107       0.0476        0.583

                TNM_PATH_STAGE_GROUP=4B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       4    0.333   0.192       0.1075        1.000
   24      2       0    0.333   0.192       0.1075        1.000
   36      2       0    0.333   0.192       0.1075        1.000
   48      1       1    0.167   0.152       0.0278        0.997

                TNM_PATH_STAGE_GROUP=N_A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=99 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    650      64    0.915  0.0102        0.895        0.935
   24    554      39    0.857  0.0131        0.832        0.883
   36    479      17    0.830  0.0143        0.802        0.858
   48    421      12    0.808  0.0152        0.779        0.838
   60    357      13    0.781  0.0165        0.749        0.814
  120     88      39    0.648  0.0252        0.600        0.699




   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_STAGE_GROUP
Loglik converged before variable  7,11 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

  n= 1093, number of events= 283 
   (87 observations deleted due to missingness)

                              coef  exp(coef)   se(coef)      z Pr(>|z|)    
TNM_PATH_STAGE_GROUP1A   4.563e-03  1.005e+00  2.778e-01  0.016    0.987    
TNM_PATH_STAGE_GROUP1B   7.066e-01  2.027e+00  6.090e-01  1.160    0.246    
TNM_PATH_STAGE_GROUP2    1.820e-01  1.200e+00  6.087e-01  0.299    0.765    
TNM_PATH_STAGE_GROUP2A   1.363e-01  1.146e+00  7.329e-01  0.186    0.852    
TNM_PATH_STAGE_GROUP2B   3.649e-01  1.440e+00  1.019e+00  0.358    0.720    
TNM_PATH_STAGE_GROUP3    2.622e-01  1.300e+00  7.330e-01  0.358    0.721    
TNM_PATH_STAGE_GROUP3A  -1.340e+01  1.509e-06  5.363e+03 -0.002    0.998    
TNM_PATH_STAGE_GROUP4    1.769e+00  5.865e+00  3.163e-01  5.593 2.24e-08 ***
TNM_PATH_STAGE_GROUP4A   1.763e+00  5.828e+00  3.591e-01  4.909 9.14e-07 ***
TNM_PATH_STAGE_GROUP4B   2.044e+00  7.718e+00  4.895e-01  4.174 2.99e-05 ***
TNM_PATH_STAGE_GROUPN_A -1.340e+01  1.511e-06  1.643e+03 -0.008    0.993    
TNM_PATH_STAGE_GROUP99   1.237e-01  1.132e+00  2.060e-01  0.601    0.548    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                        exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1A  1.005e+00  9.954e-01    0.5828     1.732
TNM_PATH_STAGE_GROUP1B  2.027e+00  4.933e-01    0.6144     6.688
TNM_PATH_STAGE_GROUP2   1.200e+00  8.336e-01    0.3639     3.955
TNM_PATH_STAGE_GROUP2A  1.146e+00  8.726e-01    0.2725     4.821
TNM_PATH_STAGE_GROUP2B  1.440e+00  6.943e-01    0.1954    10.616
TNM_PATH_STAGE_GROUP3   1.300e+00  7.693e-01    0.3090     5.468
TNM_PATH_STAGE_GROUP3A  1.509e-06  6.629e+05    0.0000       Inf
TNM_PATH_STAGE_GROUP4   5.865e+00  1.705e-01    3.1550    10.901
TNM_PATH_STAGE_GROUP4A  5.828e+00  1.716e-01    2.8833    11.780
TNM_PATH_STAGE_GROUP4B  7.718e+00  1.296e-01    2.9567    20.146
TNM_PATH_STAGE_GROUPN_A 1.511e-06  6.620e+05    0.0000       Inf
TNM_PATH_STAGE_GROUP99  1.132e+00  8.836e-01    0.7558     1.695

Concordance= 0.578  (se = 0.015 )
Rsquare= 0.05   (max possible= 0.965 )
Likelihood ratio test= 56.16  on 12 df,   p=1.121e-07
Wald test            = 83.01  on 12 df,   p=1.098e-12
Score (logrank) test = 105.7  on 12 df,   p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 13.

Margins

uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
   
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

                            n events median 0.95LCL 0.95UCL
MARGINS=No Residual       179     33     NA      NA      NA
MARGINS=Residual, NOS      13      3     NA    27.7      NA
MARGINS=Microscopic Resid  12      3     NA    67.8      NA
MARGINS=Macroscopic Resid   5      2   80.6    80.6      NA
MARGINS=Not evaluable      44      6     NA      NA      NA
MARGINS=No surg           816    229     NA   135.6      NA
MARGINS=Unknown           111     24     NA   127.9      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

                MARGINS=No Residual 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    160       7    0.960  0.0149        0.931        0.989
   24    137       6    0.922  0.0208        0.882        0.964
   36    117       5    0.887  0.0252        0.839        0.938
   48    107       5    0.848  0.0295        0.793        0.908
   60     94       2    0.832  0.0311        0.773        0.895
  120     25       7    0.742  0.0442        0.660        0.834

                MARGINS=Residual, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       1    0.909  0.0867        0.754            1
   24      9       0    0.909  0.0867        0.754            1
   36      5       2    0.707  0.1429        0.476            1
   48      5       0    0.707  0.1429        0.476            1
   60      4       0    0.707  0.1429        0.476            1

                MARGINS=Microscopic Resid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       0    1.000  0.0000        1.000            1
   24      9       1    0.909  0.0867        0.754            1
   36      9       0    0.909  0.0867        0.754            1
   48      8       1    0.808  0.1225        0.600            1
   60      8       0    0.808  0.1225        0.600            1
  120      3       1    0.707  0.1429        0.476            1

                MARGINS=Macroscopic Resid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0      1.0   0.000        1.000            1
   24      5       0      1.0   0.000        1.000            1
   36      5       0      1.0   0.000        1.000            1
   48      5       0      1.0   0.000        1.000            1
   60      4       1      0.8   0.179        0.516            1

                MARGINS=Not evaluable 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     35       3    0.924  0.0421        0.845        1.000
   24     33       1    0.897  0.0488        0.806        0.998
   36     26       1    0.864  0.0572        0.759        0.984
   48     26       0    0.864  0.0572        0.759        0.984
   60     23       0    0.864  0.0572        0.759        0.984
  120      5       1    0.816  0.0714        0.687        0.968

                MARGINS=No surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    655      90    0.885  0.0114        0.863        0.908
   24    548      50    0.815  0.0142        0.788        0.843
   36    473      19    0.786  0.0152        0.756        0.816
   48    400      13    0.763  0.0160        0.732        0.795
   60    327      16    0.729  0.0174        0.696        0.764
  120     79      36    0.600  0.0255        0.553        0.653

                MARGINS=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     95       5    0.953  0.0206        0.913        0.994
   24     81       4    0.909  0.0290        0.854        0.968
   36     71       1    0.898  0.0308        0.840        0.960
   48     63       1    0.884  0.0334        0.821        0.952
   60     54       4    0.827  0.0415        0.750        0.913
  120     12       8    0.627  0.0720        0.501        0.785




   
## Univariable Cox Proportional Hazard Model for:  MARGINS

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

  n= 1180, number of events= 300 

                            coef exp(coef) se(coef)      z Pr(>|z|)   
MARGINSResidual, NOS      0.5029    1.6535   0.6033  0.834  0.40456   
MARGINSMicroscopic Resid  0.1659    1.1805   0.6032  0.275  0.78328   
MARGINSMacroscopic Resid  0.6374    1.8915   0.7284  0.875  0.38158   
MARGINSNot evaluable     -0.2217    0.8012   0.4439 -0.499  0.61745   
MARGINSNo surg            0.5740    1.7753   0.1863  3.080  0.00207 **
MARGINSUnknown            0.2144    1.2392   0.2683  0.799  0.42423   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                         exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS        1.6535     0.6048    0.5068     5.395
MARGINSMicroscopic Resid    1.1805     0.8471    0.3619     3.850
MARGINSMacroscopic Resid    1.8915     0.5287    0.4537     7.886
MARGINSNot evaluable        0.8012     1.2482    0.3356     1.912
MARGINSNo surg              1.7753     0.5633    1.2322     2.558
MARGINSUnknown              1.2392     0.8070    0.7323     2.097

Concordance= 0.56  (se = 0.015 )
Rsquare= 0.014   (max possible= 0.964 )
Likelihood ratio test= 16.3  on 6 df,   p=0.01223
Wald test            = 14.5  on 6 df,   p=0.02454
Score (logrank) test = 14.92  on 6 df,   p=0.02085
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  MARGINS

Margins Yes/No

#uni_var(test_var = "MARGINS_YN", data_imp = data)

30 Day Readmission

uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
   
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

                                              n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 1141    290     NA      NA      NA
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same      4      1     NA    0.89      NA
READM_HOSP_30_DAYS_F=Plan_Readmit_Same       13      5   41.1   27.70      NA
READM_HOSP_30_DAYS_F=9                       22      4     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

                READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    941      99    0.910 0.00865        0.893        0.927
   24    799      61    0.848 0.01109        0.827        0.870
   36    685      27    0.818 0.01212        0.795        0.842
   48    594      19    0.794 0.01295        0.769        0.820
   60    496      23    0.761 0.01413        0.734        0.790
  120    117      54    0.630 0.02113        0.589        0.672

                READM_HOSP_30_DAYS_F=Unplan_Readmit_Same 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1     0.75   0.217        0.426            1
   24      2       0     0.75   0.217        0.426            1
   36      2       0     0.75   0.217        0.426            1
   48      2       0     0.75   0.217        0.426            1
   60      2       0     0.75   0.217        0.426            1

                READM_HOSP_30_DAYS_F=Plan_Readmit_Same 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       2    0.839   0.104        0.657        1.000
   24      6       1    0.734   0.134        0.513        1.000
   36      5       1    0.612   0.158        0.369        1.000
   48      4       1    0.490   0.167        0.251        0.956
   60      3       0    0.490   0.167        0.251        0.956
  120      2       0    0.490   0.167        0.251        0.956

                READM_HOSP_30_DAYS_F=9 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     18       4    0.818  0.0822        0.672        0.996
   24     15       0    0.818  0.0822        0.672        0.996
   36     14       0    0.818  0.0822        0.672        0.996
   48     14       0    0.818  0.0822        0.672        0.996
   60     13       0    0.818  0.0822        0.672        0.996
  120      5       0    0.818  0.0822        0.672        0.996




   
## Univariable Cox Proportional Hazard Model for:  READM_HOSP_30_DAYS_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

  n= 1180, number of events= 300 

                                           coef exp(coef) se(coef)      z Pr(>|z|)
READM_HOSP_30_DAYS_FUnplan_Readmit_Same  0.1403    1.1506   1.0020  0.140    0.889
READM_HOSP_30_DAYS_FPlan_Readmit_Same    0.5710    1.7700   0.4515  1.265    0.206
READM_HOSP_30_DAYS_F9                   -0.5237    0.5923   0.5037 -1.040    0.298

                                        exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FUnplan_Readmit_Same    1.1506     0.8691    0.1614     8.200
READM_HOSP_30_DAYS_FPlan_Readmit_Same      1.7700     0.5650    0.7305     4.289
READM_HOSP_30_DAYS_F9                      0.5923     1.6882    0.2207     1.590

Concordance= 0.508  (se = 0.005 )
Rsquare= 0.002   (max possible= 0.964 )
Likelihood ratio test= 2.69  on 3 df,   p=0.4416
Wald test            = 2.74  on 3 df,   p=0.4332
Score (logrank) test = 2.82  on 3 df,   p=0.4206
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  READM_HOSP_30_DAYS_F

Radiation Type

uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
   
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

                                             n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None                   699    180     NA      NA      NA
RX_SUMM_RADIATION_F=Beam Radiation         461    113     NA   135.6      NA
RX_SUMM_RADIATION_F=Radioactive Implants     8      3   58.2    22.2      NA
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes   1      0     NA      NA      NA
RX_SUMM_RADIATION_F=Radiation, NOS           5      2  127.9    11.6      NA
RX_SUMM_RADIATION_F=Unknown                  6      2     NA    20.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

                RX_SUMM_RADIATION_F=None 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    548      80    0.880  0.0126        0.856        0.905
   24    473      29    0.832  0.0148        0.803        0.861
   36    407      14    0.806  0.0158        0.775        0.838
   48    359       8    0.789  0.0166        0.757        0.822
   60    304      12    0.761  0.0179        0.727        0.797
  120     76      35    0.617  0.0277        0.565        0.674

                RX_SUMM_RADIATION_F=Beam Radiation 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    408      23    0.949  0.0104        0.928        0.969
   24    339      31    0.874  0.0161        0.843        0.906
   36    291      14    0.836  0.0183        0.801        0.873
   48    247      12    0.799  0.0203        0.760        0.840
   60    205      10    0.765  0.0222        0.722        0.809
  120     47      19    0.664  0.0298        0.608        0.725

                RX_SUMM_RADIATION_F=Radioactive Implants 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       1    0.857   0.132        0.633            1
   24      4       1    0.686   0.186        0.403            1
   36      3       0    0.686   0.186        0.403            1
   48      3       0    0.686   0.186        0.403            1

                RX_SUMM_RADIATION_F=Beam + Imp or Isotopes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                RX_SUMM_RADIATION_F=Radiation, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       1     0.75   0.217        0.426            1
   24      3       0     0.75   0.217        0.426            1
   36      3       0     0.75   0.217        0.426            1
   48      3       0     0.75   0.217        0.426            1
   60      3       0     0.75   0.217        0.426            1
  120      1       0     0.75   0.217        0.426            1

                RX_SUMM_RADIATION_F=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1      0.8   0.179        0.516            1
   24      2       1      0.6   0.219        0.293            1
   36      1       0      0.6   0.219        0.293            1
   48      1       0      0.6   0.219        0.293            1
   60      1       0      0.6   0.219        0.293            1




   
## Univariable Cox Proportional Hazard Model for:  RX_SUMM_RADIATION_F
Loglik converged before variable  3 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

  n= 1180, number of events= 300 

                                                coef  exp(coef)   se(coef)      z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation         -1.088e-01  8.969e-01  1.201e-01 -0.906    0.365
RX_SUMM_RADIATION_FRadioactive Implants    7.853e-01  2.193e+00  5.832e-01  1.347    0.178
RX_SUMM_RADIATION_FBeam + Imp or Isotopes -1.305e+01  2.156e-06  1.090e+03 -0.012    0.990
RX_SUMM_RADIATION_FRadiation, NOS          2.684e-01  1.308e+00  7.115e-01  0.377    0.706
RX_SUMM_RADIATION_FUnknown                 7.917e-01  2.207e+00  7.116e-01  1.113    0.266

                                          exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation         8.969e-01  1.115e+00    0.7088     1.135
RX_SUMM_RADIATION_FRadioactive Implants   2.193e+00  4.560e-01    0.6993     6.878
RX_SUMM_RADIATION_FBeam + Imp or Isotopes 2.156e-06  4.638e+05    0.0000       Inf
RX_SUMM_RADIATION_FRadiation, NOS         1.308e+00  7.646e-01    0.3243     5.274
RX_SUMM_RADIATION_FUnknown                2.207e+00  4.531e-01    0.5471     8.903

Concordance= 0.531  (se = 0.015 )
Rsquare= 0.004   (max possible= 0.964 )
Likelihood ratio test= 4.39  on 5 df,   p=0.4954
Wald test            = 4.37  on 5 df,   p=0.497
Score (logrank) test = 4.96  on 5 df,   p=0.4206
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RX_SUMM_RADIATION_F

Lymphovascular Invasion

#uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)

Endoscopic/Robotic

uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
   
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

   613 observations deleted due to missingness 
                                            n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg          455     96   91.7      NA      NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open   1      0     NA      NA      NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown     110     19   93.9      NA      NA
RX_HOSP_SURG_APPR_2010_F=Unknown            1      0     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

613 observations deleted due to missingness 
                RX_HOSP_SURG_APPR_2010_F=No_Surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    361      44    0.899  0.0145        0.871        0.927
   24    290      23    0.837  0.0184        0.802        0.874
   36    219      11    0.803  0.0203        0.764        0.844
   48    153       7    0.772  0.0226        0.729        0.818
   60     96       7    0.726  0.0273        0.675        0.782

                RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
          12            1            0            1            0            1            1 

                RX_HOSP_SURG_APPR_2010_F=Open_Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     96       7    0.935  0.0238        0.889        0.983
   24     75       4    0.892  0.0310        0.833        0.955
   36     56       1    0.880  0.0329        0.817        0.947
   48     48       2    0.846  0.0392        0.773        0.927
   60     34       4    0.773  0.0501        0.681        0.878

                RX_HOSP_SURG_APPR_2010_F=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable  1,3 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

  n= 567, number of events= 115 
   (613 observations deleted due to missingness)

                                               coef  exp(coef)   se(coef)      z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open -1.408e+01  7.645e-07  3.364e+03 -0.004    0.997
RX_HOSP_SURG_APPR_2010_FOpen_Unknown     -3.952e-01  6.736e-01  2.594e-01 -1.524    0.128
RX_HOSP_SURG_APPR_2010_FUnknown          -1.408e+01  7.650e-07  2.550e+03 -0.006    0.996

                                         exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open 7.645e-07  1.308e+06    0.0000       Inf
RX_HOSP_SURG_APPR_2010_FOpen_Unknown     6.736e-01  1.485e+00    0.4051      1.12
RX_HOSP_SURG_APPR_2010_FUnknown          7.650e-07  1.307e+06    0.0000       Inf

Concordance= 0.53  (se = 0.02 )
Rsquare= 0.005   (max possible= 0.906 )
Likelihood ratio test= 3.12  on 3 df,   p=0.373
Wald test            = 2.32  on 3 df,   p=0.5085
Score (logrank) test = 2.65  on 3 df,   p=0.4485
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RX_HOSP_SURG_APPR_2010_F

Surgery Radiation Sequence

uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
   
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

                             n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone    217     42     NA      NA      NA
SURG_RAD_SEQ=Surg then Rad 140     27     NA      NA      NA
SURG_RAD_SEQ=Rad Alone     332     89  135.6   127.2      NA
SURG_RAD_SEQ=No Treatment  473    132     NA   140.2      NA
SURG_RAD_SEQ=Other          16      8   41.1    11.9      NA
SURG_RAD_SEQ=Rad then Surg   2      2   43.3    25.7      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

                SURG_RAD_SEQ=Surg Alone 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    176      15    0.927  0.0181        0.892        0.963
   24    151       5    0.899  0.0215        0.858        0.942
   36    132       3    0.880  0.0236        0.835        0.928
   48    120       4    0.853  0.0266        0.802        0.907
   60    103       4    0.823  0.0295        0.768        0.883
  120     20      11    0.672  0.0508        0.579        0.779

                SURG_RAD_SEQ=Surg then Rad 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    133       1    0.993 0.00743        0.978        1.000
   24    118       7    0.938 0.02117        0.898        0.981
   36     98       5    0.896 0.02735        0.844        0.951
   48     91       3    0.868 0.03098        0.809        0.931
   60     81       3    0.839 0.03421        0.774        0.908
  120     24       6    0.756 0.04490        0.673        0.849

                SURG_RAD_SEQ=Rad Alone 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    282      24    0.925  0.0147        0.897        0.954
   24    226      25    0.839  0.0211        0.799        0.882
   36    198       8    0.808  0.0230        0.765        0.855
   48    161       9    0.769  0.0254        0.721        0.820
   60    126       8    0.726  0.0282        0.672        0.783
  120     23      12    0.621  0.0388        0.549        0.701

                SURG_RAD_SEQ=No Treatment 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    368      61    0.866  0.0160        0.835        0.898
   24    318      24    0.807  0.0189        0.771        0.845
   36    271      11    0.778  0.0202        0.739        0.818
   48    236       3    0.769  0.0206        0.729        0.810
   60    198       8    0.741  0.0221        0.699        0.785
  120     55      23    0.603  0.0331        0.541        0.671

                SURG_RAD_SEQ=Other 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       5    0.650   0.127        0.444        0.953
   24      7       1    0.578   0.132        0.370        0.903
   36      6       0    0.578   0.132        0.370        0.903
   48      5       1    0.481   0.141        0.272        0.853
   60      5       0    0.481   0.141        0.272        0.853
  120      2       1    0.361   0.148        0.161        0.807

                SURG_RAD_SEQ=Rad then Surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      2       0      1.0   0.000        1.000            1
   36      1       1      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1




   
## Univariable Cox Proportional Hazard Model for:  SURG_RAD_SEQ

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

  n= 1180, number of events= 300 

                             coef exp(coef) se(coef)      z Pr(>|z|)   
SURG_RAD_SEQSurg then Rad -0.1856    0.8306   0.2468 -0.752  0.45194   
SURG_RAD_SEQRad Alone      0.3825    1.4660   0.1873  2.042  0.04116 * 
SURG_RAD_SEQNo Treatment   0.4116    1.5093   0.1772  2.323  0.02017 * 
SURG_RAD_SEQOther          1.2354    3.4396   0.3860  3.201  0.00137 **
SURG_RAD_SEQRad then Surg  1.7646    5.8394   0.7244  2.436  0.01485 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                          exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad    0.8306     1.2040     0.512     1.347
SURG_RAD_SEQRad Alone        1.4660     0.6821     1.015     2.116
SURG_RAD_SEQNo Treatment     1.5093     0.6626     1.066     2.136
SURG_RAD_SEQOther            3.4396     0.2907     1.614     7.329
SURG_RAD_SEQRad then Surg    5.8394     0.1712     1.412    24.154

Concordance= 0.58  (se = 0.017 )
Rsquare= 0.018   (max possible= 0.964 )
Likelihood ratio test= 21.84  on 5 df,   p=0.0005625
Wald test            = 23.5  on 5 df,   p=0.0002708
Score (logrank) test = 25.44  on 5 df,   p=0.0001146
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SURG_RAD_SEQ

Surgery Yes/No

uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
   
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

                 n events median 0.95LCL 0.95UCL
SURGERY_YN=No  807    224     NA   135.6      NA
SURGERY_YN=Ukn  11      5   91.7    11.9      NA
SURGERY_YN=Yes 362     71     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

                SURGERY_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    650      87    0.888  0.0113        0.866        0.911
   24    544      50    0.817  0.0142        0.790        0.845
   36    469      19    0.787  0.0152        0.758        0.818
   48    397      12    0.766  0.0160        0.735        0.798
   60    324      16    0.732  0.0174        0.699        0.767
  120     78      35    0.605  0.0257        0.556        0.657

                SURGERY_YN=Ukn 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       3    0.667   0.157        0.420        1.000
   24      5       0    0.667   0.157        0.420        1.000
   36      5       0    0.667   0.157        0.420        1.000
   48      4       1    0.533   0.173        0.282        1.000
   60      4       0    0.533   0.173        0.282        1.000
  120      2       1    0.400   0.174        0.171        0.938

                SURGERY_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    314      16    0.954  0.0113        0.932        0.976
   24    273      12    0.915  0.0153        0.886        0.946
   36    232       9    0.884  0.0181        0.849        0.920
   48    213       7    0.856  0.0203        0.817        0.897
   60    186       7    0.827  0.0223        0.785        0.872
  120     44      18    0.704  0.0343        0.640        0.775




   
## Univariable Cox Proportional Hazard Model for:  SURGERY_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

  n= 1180, number of events= 300 

                 coef exp(coef) se(coef)      z Pr(>|z|)    
SURGERY_YNUkn  0.5898    1.8036   0.4525  1.303 0.192446    
SURGERY_YNYes -0.4730    0.6231   0.1363 -3.471 0.000519 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

              exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn    1.8036     0.5545     0.743    4.3783
SURGERY_YNYes    0.6231     1.6048     0.477    0.8139

Concordance= 0.562  (se = 0.015 )
Rsquare= 0.013   (max possible= 0.964 )
Likelihood ratio test= 15.07  on 2 df,   p=0.0005341
Wald test            = 14.48  on 2 df,   p=0.0007164
Score (logrank) test = 14.87  on 2 df,   p=0.0005892
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SURGERY_YN

Radiation Yes/No

uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
   
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

   8 observations deleted due to missingness 
                   n events median 0.95LCL 0.95UCL
RADIATION_YN=No  697    178     NA      NA      NA
RADIATION_YN=Yes 475    118     NA     136      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

8 observations deleted due to missingness 
                RADIATION_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    548      78    0.883  0.0125        0.859        0.908
   24    473      29    0.834  0.0147        0.806        0.863
   36    407      14    0.808  0.0158        0.778        0.840
   48    359       8    0.792  0.0165        0.760        0.825
   60    304      12    0.763  0.0178        0.729        0.799
  120     76      35    0.619  0.0277        0.567        0.676

                RADIATION_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    418      25    0.946  0.0106        0.925        0.967
   24    347      32    0.870  0.0161        0.839        0.902
   36    298      14    0.833  0.0182        0.799        0.870
   48    254      12    0.798  0.0201        0.759        0.838
   60    209      11    0.760  0.0221        0.718        0.805
  120     48      19    0.663  0.0292        0.608        0.722




   
## Univariable Cox Proportional Hazard Model for:  RADIATION_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

  n= 1172, number of events= 296 
   (8 observations deleted due to missingness)

                    coef exp(coef) se(coef)      z Pr(>|z|)
RADIATION_YNYes -0.08048   0.92267  0.11877 -0.678    0.498

                exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes    0.9227      1.084    0.7311     1.165

Concordance= 0.523  (se = 0.015 )
Rsquare= 0   (max possible= 0.963 )
Likelihood ratio test= 0.46  on 1 df,   p=0.4969
Wald test            = 0.46  on 1 df,   p=0.498
Score (logrank) test = 0.46  on 1 df,   p=0.4979





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RADIATION_YN

Chemo Yes/No

uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
   
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

               n events median 0.95LCL 0.95UCL
CHEMO_YN=No  819    161     NA      NA      NA
CHEMO_YN=Yes 323    132   98.2      77      NA
CHEMO_YN=Ukn  38      7     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

                CHEMO_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    691      53    0.933 0.00887        0.916        0.951
   24    601      30    0.891 0.01137        0.869        0.913
   36    512      18    0.863 0.01280        0.838        0.888
   48    445      13    0.839 0.01399        0.812        0.867
   60    377      10    0.819 0.01508        0.790        0.849
  120     89      32    0.709 0.02358        0.664        0.756

                CHEMO_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    245      52    0.832  0.0213        0.792        0.875
   24    194      29    0.730  0.0258        0.681        0.782
   36    169      10    0.691  0.0272        0.640        0.746
   48    146       6    0.665  0.0281        0.613        0.723
   60    122      12    0.609  0.0301        0.553        0.671
  120     30      21    0.452  0.0387        0.382        0.535

                CHEMO_YN=Ukn 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     34       1    0.971  0.0282        0.918        1.000
   24     27       3    0.883  0.0551        0.781        0.998
   36     25       0    0.883  0.0551        0.781        0.998
   48     23       1    0.848  0.0632        0.732        0.981
   60     15       1    0.801  0.0752        0.666        0.962
  120      5       1    0.712  0.1072        0.530        0.956




   
## Univariable Cox Proportional Hazard Model for:  CHEMO_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

  n= 1180, number of events= 300 

                coef exp(coef) se(coef)      z Pr(>|z|)    
CHEMO_YNYes  0.84659   2.33169  0.11751  7.205 5.82e-13 ***
CHEMO_YNUkn -0.07191   0.93061  0.38612 -0.186    0.852    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

            exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes    2.3317     0.4289    1.8520     2.936
CHEMO_YNUkn    0.9306     1.0746    0.4366     1.984

Concordance= 0.6  (se = 0.014 )
Rsquare= 0.042   (max possible= 0.964 )
Likelihood ratio test= 50.17  on 2 df,   p=1.274e-11
Wald test            = 53.31  on 2 df,   p=2.657e-12
Score (logrank) test = 56.58  on 2 df,   p=5.166e-13
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  CHEMO_YN

Treatment Yes/No

uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
   
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

   38 observations deleted due to missingness 
              n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 258     48     NA      NA      NA
Tx_YN=TRUE  884    245     NA     136      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

38 observations deleted due to missingness 
                Tx_YN=FALSE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    202      28    0.888  0.0199        0.850        0.928
   24    188       3    0.875  0.0211        0.834        0.917
   36    162       2    0.864  0.0221        0.822        0.909
   48    141       1    0.859  0.0226        0.815        0.904
   60    119       2    0.845  0.0242        0.799        0.894
  120     32      11    0.720  0.0432        0.640        0.809

                Tx_YN=TRUE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    734      77    0.909 0.00986        0.890        0.929
   24    607      56    0.837 0.01301        0.812        0.863
   36    519      26    0.799 0.01435        0.772        0.828
   48    450      18    0.770 0.01540        0.740        0.801
   60    380      20    0.734 0.01668        0.702        0.767
  120     87      42    0.607 0.02353        0.563        0.655




   
## Univariable Cox Proportional Hazard Model for:  Tx_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

  n= 1142, number of events= 293 
   (38 observations deleted due to missingness)

            coef exp(coef) se(coef)     z Pr(>|z|)   
Tx_YNTRUE 0.4089    1.5051   0.1579 2.589  0.00962 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

          exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE     1.505     0.6644     1.104     2.051

Concordance= 0.523  (se = 0.013 )
Rsquare= 0.006   (max possible= 0.965 )
Likelihood ratio test= 7.33  on 1 df,   p=0.006784
Wald test            = 6.7  on 1 df,   p=0.009622
Score (logrank) test = 6.8  on 1 df,   p=0.00913





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  Tx_YN

Metastases at Dx

uni_var(test_var = "mets_at_dx_F", data_imp = data)
_________________________________________________
   
## mets_at_dx_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

      n  events  median 0.95LCL 0.95UCL 
   1180     300      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    970     106    0.907 0.00865        0.890        0.924
   24    822      62    0.846 0.01097        0.825        0.868
   36    706      28    0.816 0.01197        0.793        0.840
   48    614      20    0.792 0.01280        0.767        0.817
   60    514      23    0.760 0.01389        0.733        0.788
  120    124      54    0.634 0.02048        0.595        0.675



   
## Univariable Cox Proportional Hazard Model for:  mets_at_dx_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

  n= 1180, number of events= 300 

                 coef exp(coef) se(coef)  z Pr(>|z|)
mets_at_dx_FTRUE    0         1        0 NA       NA

                 exp(coef) exp(-coef) lower .95 upper .95
mets_at_dx_FTRUE         1          1         1         1

Concordance= 0.5  (se = 0 )
Rsquare= 0   (max possible= 0.964 )
Likelihood ratio test= 0  on 1 df,   p=1
Wald test            = NaN  on 1 df,   p=NaN
Score (logrank) test = 0  on 1 df,   p=1
relative range of values =   0 * EPS, is small (axis 0)



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  mets_at_dx_F

Tumor specific Variables

Node Size

Cox Proportional Hazard Ratio

Model #1

Full analysis

model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
                     ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
                     data = data)
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + 
    INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F, data = data)

  n= 938, number of events= 276 
   (242 observations deleted due to missingness)

                                                  coef exp(coef)  se(coef)      z Pr(>|z|)    
SURG_RAD_SEQSurg then Rad                    -0.566322  0.567609  0.267246 -2.119  0.03408 *  
SURG_RAD_SEQRad Alone                        -0.062566  0.939351  0.203372 -0.308  0.75835    
SURG_RAD_SEQNo Treatment                      0.328050  1.388258  0.198172  1.655  0.09785 .  
SURG_RAD_SEQOther                             0.776199  2.173197  0.409103  1.897  0.05779 .  
SURG_RAD_SEQRad then Surg                     1.020053  2.773341  0.803271  1.270  0.20413    
INSURANCE_FNone                               1.233832  3.434365  0.383941  3.214  0.00131 ** 
INSURANCE_FMedicaid                           0.742470  2.101119  0.324114  2.291  0.02198 *  
INSURANCE_FMedicare                           0.135191  1.144755  0.178149  0.759  0.44793    
INSURANCE_FOther Government                  -1.088961  0.336566  1.013362 -1.075  0.28255    
INSURANCE_FUnknown                           -0.552636  0.575431  0.516924 -1.069  0.28503    
AGE                                           0.061645  1.063585  0.006745  9.140  < 2e-16 ***
SEX_FFemale                                  -0.045751  0.955280  0.128897 -0.355  0.72263    
RACE_FBlack                                   0.898677  2.456352  0.190723  4.712 2.45e-06 ***
RACE_FOther/Unk                               0.045934  1.047006  0.413940  0.111  0.91164    
RACE_FAsian                                  -0.559908  0.571262  0.518495 -1.080  0.28020    
INCOME_F$38,000 - $47,999                     0.083940  1.087564  0.226746  0.370  0.71124    
INCOME_F$48,000 - $62,999                    -0.140912  0.868566  0.237226 -0.594  0.55251    
INCOME_F$63,000 +                             0.197166  1.217946  0.265575  0.742  0.45784    
U_R_FUrban                                    0.059738  1.061558  0.198979  0.300  0.76401    
U_R_FRural                                    0.147958  1.159464  0.529784  0.279  0.78003    
FACILITY_TYPE_FComprehensive Comm Ca Program -0.063472  0.938500  0.262659 -0.242  0.80905    
FACILITY_TYPE_FAcademic/Research Program     -0.396417  0.672726  0.264939 -1.496  0.13459    
FACILITY_TYPE_FIntegrated Network Ca Program -0.388359  0.678169  0.331991 -1.170  0.24209    
FACILITY_LOCATION_FMiddle Atlantic            0.468137  1.597017  0.342105  1.368  0.17119    
FACILITY_LOCATION_FSouth Atlantic             0.520991  1.683695  0.345509  1.508  0.13158    
FACILITY_LOCATION_FEast North Central         0.101458  1.106783  0.354481  0.286  0.77471    
FACILITY_LOCATION_FEast South Central         0.201270  1.222955  0.417191  0.482  0.62949    
FACILITY_LOCATION_FWest North Central         0.169121  1.184263  0.412332  0.410  0.68169    
FACILITY_LOCATION_FWest South Central         0.352221  1.422223  0.459093  0.767  0.44296    
FACILITY_LOCATION_FMountain                  -0.181029  0.834411  0.448149 -0.404  0.68625    
FACILITY_LOCATION_FPacific                    0.150220  1.162089  0.373406  0.402  0.68747    
EDUCATION_F13 - 20.9%                        -0.143983  0.865903  0.228290 -0.631  0.52824    
EDUCATION_F7 - 12.9%                         -0.161555  0.850819  0.236693 -0.683  0.49489    
EDUCATION_FLess than 7%                      -0.178515  0.836512  0.278009 -0.642  0.52080    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                             exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad                       0.5676     1.7618   0.33618    0.9584
SURG_RAD_SEQRad Alone                           0.9394     1.0646   0.63055    1.3994
SURG_RAD_SEQNo Treatment                        1.3883     0.7203   0.94142    2.0472
SURG_RAD_SEQOther                               2.1732     0.4602   0.97470    4.8454
SURG_RAD_SEQRad then Surg                       2.7733     0.3606   0.57446   13.3890
INSURANCE_FNone                                 3.4344     0.2912   1.61821    7.2888
INSURANCE_FMedicaid                             2.1011     0.4759   1.11318    3.9659
INSURANCE_FMedicare                             1.1448     0.8735   0.80737    1.6231
INSURANCE_FOther Government                     0.3366     2.9712   0.04618    2.4527
INSURANCE_FUnknown                              0.5754     1.7378   0.20892    1.5849
AGE                                             1.0636     0.9402   1.04962    1.0777
SEX_FFemale                                     0.9553     1.0468   0.74202    1.2298
RACE_FBlack                                     2.4564     0.4071   1.69023    3.5697
RACE_FOther/Unk                                 1.0470     0.9551   0.46516    2.3567
RACE_FAsian                                     0.5713     1.7505   0.20677    1.5783
INCOME_F$38,000 - $47,999                       1.0876     0.9195   0.69735    1.6961
INCOME_F$48,000 - $62,999                       0.8686     1.1513   0.54560    1.3827
INCOME_F$63,000 +                               1.2179     0.8211   0.72372    2.0497
U_R_FUrban                                      1.0616     0.9420   0.71874    1.5679
U_R_FRural                                      1.1595     0.8625   0.41049    3.2750
FACILITY_TYPE_FComprehensive Comm Ca Program    0.9385     1.0655   0.56087    1.5704
FACILITY_TYPE_FAcademic/Research Program        0.6727     1.4865   0.40024    1.1307
FACILITY_TYPE_FIntegrated Network Ca Program    0.6782     1.4746   0.35379    1.3000
FACILITY_LOCATION_FMiddle Atlantic              1.5970     0.6262   0.81679    3.1226
FACILITY_LOCATION_FSouth Atlantic               1.6837     0.5939   0.85539    3.3141
FACILITY_LOCATION_FEast North Central           1.1068     0.9035   0.55249    2.2172
FACILITY_LOCATION_FEast South Central           1.2230     0.8177   0.53988    2.7703
FACILITY_LOCATION_FWest North Central           1.1843     0.8444   0.52780    2.6572
FACILITY_LOCATION_FWest South Central           1.4222     0.7031   0.57834    3.4974
FACILITY_LOCATION_FMountain                     0.8344     1.1984   0.34667    2.0084
FACILITY_LOCATION_FPacific                      1.1621     0.8605   0.55898    2.4159
EDUCATION_F13 - 20.9%                           0.8659     1.1549   0.55354    1.3545
EDUCATION_F7 - 12.9%                            0.8508     1.1753   0.53501    1.3530
EDUCATION_FLess than 7%                         0.8365     1.1954   0.48510    1.4425

Concordance= 0.754  (se = 0.019 )
Rsquare= 0.221   (max possible= 0.975 )
Likelihood ratio test= 234.5  on 34 df,   p=0
Wald test            = 208.2  on 34 df,   p=0
Score (logrank) test = 234.3  on 34 df,   p=0

Summary of Model

model_one %>%
        tidy(., exponentiate = TRUE) %>%
        select(term, estimate, conf.low, conf.high, p.value) %>%
        rename(Variable = term,
               Hazard_Ratio = estimate) %>%
        tbl_df %>%
        print(n = nrow(.))

Linear Regression

summary(fit_surv) # R^2 = , p = 

Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ FACILITY_TYPE_F + 
    CHEMO_YN + RADIATION_YN + SURGERY_YN + IMMUNO_YN + AGE + 
    SEX_F + RACE_F + INSURANCE_F + INCOME_F + EDUCATION_F + YEAR_OF_DIAGNOSIS + 
    GRADE_F, data = data2)

Residuals:
    Min      1Q  Median      3Q     Max 
-95.540 -21.293   4.493  23.054  87.956 

Coefficients:
                                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                  191.3812    36.9312   5.182 2.72e-07 ***
FACILITY_TYPE_FComprehensive Comm Ca Program   0.6702     5.0656   0.132 0.894774    
FACILITY_TYPE_FAcademic/Research Program       1.5279     4.8763   0.313 0.754107    
FACILITY_TYPE_FIntegrated Network Ca Program   5.4942     5.8825   0.934 0.350568    
CHEMO_YNYes                                  -10.3896     2.7064  -3.839 0.000132 ***
RADIATION_YNYes                                5.6159     2.4811   2.263 0.023852 *  
SURGERY_YNYes                                  5.7162     2.5943   2.203 0.027829 *  
IMMUNO_YNYes                                  11.4536     8.2727   1.385 0.166554    
IMMUNO_YNUkn                                 -12.2307    15.8877  -0.770 0.441613    
AGE                                           -0.7704     0.1213  -6.349 3.47e-10 ***
SEX_FFemale                                   -1.2377     2.3796  -0.520 0.603117    
RACE_FBlack                                  -14.2535     3.9786  -3.583 0.000359 ***
RACE_FOther/Unk                                2.2005     7.9961   0.275 0.783225    
RACE_FAsian                                   -0.5150     7.5002  -0.069 0.945268    
INSURANCE_FNone                              -16.4717     7.8190  -2.107 0.035431 *  
INSURANCE_FMedicaid                           -2.1228     5.8363  -0.364 0.716158    
INSURANCE_FMedicare                            3.0289     3.3299   0.910 0.363269    
INSURANCE_FOther Government                    5.2547     9.3766   0.560 0.575346    
INSURANCE_FUnknown                            -0.4817     8.5814  -0.056 0.955249    
INCOME_F$38,000 - $47,999                     -3.0600     4.7109  -0.650 0.516146    
INCOME_F$48,000 - $62,999                      1.3192     4.7482   0.278 0.781213    
INCOME_F$63,000 +                             -7.5118     5.1510  -1.458 0.145107    
EDUCATION_F13 - 20.9%                          6.0543     4.5611   1.327 0.184726    
EDUCATION_F7 - 12.9%                           3.6991     4.7192   0.784 0.433339    
EDUCATION_FLess than 7%                       10.5984     5.2664   2.012 0.044475 *  
YEAR_OF_DIAGNOSIS2005                         -4.8725     6.0485  -0.806 0.420701    
YEAR_OF_DIAGNOSIS2006                         -4.3935     6.0448  -0.727 0.467534    
YEAR_OF_DIAGNOSIS2007                        -22.2989     5.6310  -3.960 8.10e-05 ***
YEAR_OF_DIAGNOSIS2008                        -28.8659     5.8990  -4.893 1.18e-06 ***
YEAR_OF_DIAGNOSIS2009                        -23.0326     5.5655  -4.138 3.83e-05 ***
YEAR_OF_DIAGNOSIS2010                        -27.7842     5.5135  -5.039 5.67e-07 ***
YEAR_OF_DIAGNOSIS2011                        -32.6577     5.7855  -5.645 2.23e-08 ***
YEAR_OF_DIAGNOSIS2012                        -45.7135     6.0817  -7.517 1.38e-13 ***
YEAR_OF_DIAGNOSIS2013                        -49.4850     5.8255  -8.495  < 2e-16 ***
YEAR_OF_DIAGNOSIS2014                        -61.6729     5.9956 -10.286  < 2e-16 ***
YEAR_OF_DIAGNOSIS2015                        -66.4895     5.7898 -11.484  < 2e-16 ***
GRADE_FGr III: Poor Diff                     -65.8690    49.9992  -1.317 0.188046    
GRADE_FGr IV: Undiff/Anaplastic              -55.4046    36.1949  -1.531 0.126194    
GRADE_F5                                     -62.6329    35.4270  -1.768 0.077417 .  
GRADE_F6                                     -48.6550    36.2337  -1.343 0.179678    
GRADE_F7                                     -21.7474    50.4767  -0.431 0.666690    
GRADE_FNA/Unkown                             -55.0004    35.4765  -1.550 0.121420    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 34.81 on 882 degrees of freedom
  (207 observations deleted due to missingness)
Multiple R-squared:  0.3547,    Adjusted R-squared:  0.3247 
F-statistic: 11.82 on 41 and 882 DF,  p-value: < 2.2e-16

Prediction Logistic Regression Models

Surgery

Chemo

Radiation

Immunotherapy

Any Treatment

no_Ukns <- data %>%
  filter(Tx_YN != "Ukn") %>%
  droplevels()
fit_tx <- glm(Tx_YN ~ FACILITY_TYPE_F + FACILITY_LOCATION_F +
                 AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F + 
                 EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F,
   data = no_Ukns)
summary(fit_tx)

Call:
glm(formula = Tx_YN ~ FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F + 
    EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F, data = no_Ukns)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-1.00725  -0.02422   0.13310   0.24735   0.55586  

Coefficients:
                                                          Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                               1.405845   0.435552   3.228 0.001294 ** 
FACILITY_TYPE_FComprehensive Comm Ca Program              0.004788   0.056304   0.085 0.932256    
FACILITY_TYPE_FAcademic/Research Program                 -0.024470   0.054072  -0.453 0.650993    
FACILITY_TYPE_FIntegrated Network Ca Program              0.042903   0.066769   0.643 0.520685    
FACILITY_LOCATION_FMiddle Atlantic                       -0.209689   0.062339  -3.364 0.000803 ***
FACILITY_LOCATION_FSouth Atlantic                        -0.140144   0.062522  -2.242 0.025244 *  
FACILITY_LOCATION_FEast North Central                    -0.190387   0.062464  -3.048 0.002374 ** 
FACILITY_LOCATION_FEast South Central                    -0.019762   0.078456  -0.252 0.801186    
FACILITY_LOCATION_FWest North Central                    -0.124636   0.075001  -1.662 0.096915 .  
FACILITY_LOCATION_FWest South Central                    -0.109874   0.084159  -1.306 0.192049    
FACILITY_LOCATION_FMountain                              -0.128665   0.078065  -1.648 0.099676 .  
FACILITY_LOCATION_FPacific                               -0.156798   0.067605  -2.319 0.020608 *  
AGE_F(54,64]                                              0.018553   0.036800   0.504 0.614287    
AGE_F(64,74]                                              0.013502   0.047762   0.283 0.777480    
AGE_F(74,100]                                             0.033044   0.048544   0.681 0.496248    
SEX_FFemale                                              -0.041361   0.026722  -1.548 0.122032    
RACE_FBlack                                              -0.028161   0.045352  -0.621 0.534795    
RACE_FOther/Unk                                          -0.066432   0.094397  -0.704 0.481773    
RACE_FAsian                                               0.038301   0.086334   0.444 0.657415    
HISPANICYes                                               0.102547   0.064464   1.591 0.112028    
HISPANICUnknown                                           0.012004   0.066373   0.181 0.856527    
INSURANCE_FNone                                           0.070849   0.086544   0.819 0.413211    
INSURANCE_FMedicaid                                      -0.022149   0.065069  -0.340 0.733639    
INSURANCE_FMedicare                                      -0.062852   0.040256  -1.561 0.118812    
INSURANCE_FOther Government                              -0.028337   0.106134  -0.267 0.789539    
INSURANCE_FUnknown                                       -0.155886   0.094712  -1.646 0.100146    
INCOME_F$38,000 - $47,999                                -0.139155   0.052908  -2.630 0.008686 ** 
INCOME_F$48,000 - $62,999                                -0.122428   0.053990  -2.268 0.023596 *  
INCOME_F$63,000 +                                        -0.110397   0.058896  -1.874 0.061203 .  
EDUCATION_F13 - 20.9%                                     0.083628   0.052026   1.607 0.108318    
EDUCATION_F7 - 12.9%                                      0.061351   0.054348   1.129 0.259276    
EDUCATION_FLess than 7%                                   0.084102   0.061259   1.373 0.170138    
YEAR_OF_DIAGNOSIS2005                                     0.039863   0.067502   0.591 0.554972    
YEAR_OF_DIAGNOSIS2006                                    -0.001917   0.067716  -0.028 0.977426    
YEAR_OF_DIAGNOSIS2007                                     0.026652   0.063217   0.422 0.673428    
YEAR_OF_DIAGNOSIS2008                                    -0.139901   0.066531  -2.103 0.035771 *  
YEAR_OF_DIAGNOSIS2009                                     0.047282   0.062630   0.755 0.450483    
YEAR_OF_DIAGNOSIS2010                                    -0.058355   0.061386  -0.951 0.342063    
YEAR_OF_DIAGNOSIS2011                                    -0.064427   0.064966  -0.992 0.321613    
YEAR_OF_DIAGNOSIS2012                                    -0.157388   0.068110  -2.311 0.021077 *  
YEAR_OF_DIAGNOSIS2013                                    -0.020436   0.065692  -0.311 0.755805    
YEAR_OF_DIAGNOSIS2014                                     0.073752   0.067693   1.090 0.276230    
YEAR_OF_DIAGNOSIS2015                                    -0.126795   0.065307  -1.942 0.052517 .  
SITE_TEXTC44.1 Eyelid                                    -0.092427   0.266434  -0.347 0.728748    
SITE_TEXTC44.2 External ear                              -0.055926   0.182017  -0.307 0.758724    
SITE_TEXTC44.3 Skin of ear and unspecified parts of face -0.110950   0.138731  -0.800 0.424071    
SITE_TEXTC44.4 Skin of scalp and neck                    -0.132072   0.143077  -0.923 0.356220    
SITE_TEXTC44.5 Skin of trunk                             -0.121095   0.136498  -0.887 0.375242    
SITE_TEXTC44.6 Skin of upper limb and shoulder           -0.154806   0.136862  -1.131 0.258320    
SITE_TEXTC44.7 Skin of lower limb and hip                -0.135340   0.135940  -0.996 0.319729    
SITE_TEXTC44.8 Overlapping lesion of skin                -0.326628   0.146188  -2.234 0.025716 *  
SITE_TEXTC44.9 Skin, NOS                                 -0.254624   0.135176  -1.884 0.059945 .  
SITE_TEXTC51.9 Vulva, NOS                                 0.044780   0.312388   0.143 0.886049    
SITE_TEXTC52.9 Vagina, NOS                                0.026371   0.427081   0.062 0.950778    
SITE_TEXTC60.0 Prepuce                                   -0.780425   0.420679  -1.855 0.063911 .  
SITE_TEXTC60.9 Penis                                     -0.343832   0.308783  -1.114 0.265798    
GRADE_FGr III: Poor Diff                                 -0.037325   0.563594  -0.066 0.947212    
GRADE_FGr IV: Undiff/Anaplastic                          -0.181733   0.410003  -0.443 0.657696    
GRADE_F5                                                 -0.156542   0.401959  -0.389 0.697040    
GRADE_F6                                                 -0.146894   0.412761  -0.356 0.722015    
GRADE_F7                                                  0.083184   0.495427   0.168 0.866699    
GRADE_FNA/Unkown                                         -0.330164   0.402686  -0.820 0.412495    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 0.1507371)

    Null deviance: 150.16  on 933  degrees of freedom
Residual deviance: 131.44  on 872  degrees of freedom
  (208 observations deleted due to missingness)
AIC: 945.09

Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_rads), confint.default(fit_tx, level = 0.95)))
number of rows of result is not a multiple of vector length (arg 1)
                                                         Odds ratio     2.5 %    97.5 %
(Intercept)                                               1.8297836 1.7370314 9.5784096
FACILITY_TYPE_FComprehensive Comm Ca Program              0.8621574 0.8998155 1.1220313
FACILITY_TYPE_FAcademic/Research Program                  0.4876133 0.8777017 1.0849232
FACILITY_TYPE_FIntegrated Network Ca Program              0.7718355 0.9157952 1.1897790
FACILITY_LOCATION_FMiddle Atlantic                        0.7623553 0.7175800 0.9162132
FACILITY_LOCATION_FSouth Atlantic                         1.3008497 0.7689836 0.9825515
FACILITY_LOCATION_FEast North Central                     0.7500351 0.7313855 0.9342978
FACILITY_LOCATION_FEast South Central                     0.7699909 0.8406892 1.1434029
FACILITY_LOCATION_FWest North Central                     0.6492832 0.7621322 1.0226157
FACILITY_LOCATION_FWest South Central                     0.7980793 0.7597078 1.0566192
FACILITY_LOCATION_FMountain                               1.0581502 0.7545232 1.0246380
FACILITY_LOCATION_FPacific                                0.7098408 0.7487862 0.9759986
AGE_F(54,64]                                              1.2114767 0.9478355 1.0949180
AGE_F(64,74]                                              1.2112700 0.9230146 1.1130614
AGE_F(74,100]                                             1.0316648 0.9397876 1.1367676
SEX_FFemale                                               1.0738527 0.9105232 1.0110747
RACE_FBlack                                               0.7020120 0.8895412 1.0626087
RACE_FOther/Unk                                           0.6907555 0.7776755 1.1258990
RACE_FAsian                                               1.0021452 0.8772962 1.2306132
HISPANICYes                                               0.6759286 0.9764801 1.2572096
HISPANICUnknown                                           0.5257933 0.8886197 1.1526840
INSURANCE_FNone                                           0.6249400 0.9059471 1.2718508
INSURANCE_FMedicaid                                       0.8512837 0.8609810 1.1111372
INSURANCE_FMedicare                                       0.5668372 0.8678362 1.0161774
INSURANCE_FOther Government                               0.6120539 0.7894992 1.1968375
INSURANCE_FUnknown                                        0.9904401 0.7106903 1.0301931
INCOME_F$38,000 - $47,999                                 0.9542141 0.7843861 0.9651644
INCOME_F$48,000 - $62,999                                 1.0873997 0.7959287 0.9835268
INCOME_F$63,000 +                                         1.4235106 0.7978526 1.0050495
EDUCATION_F13 - 20.9%                                     1.0663355 0.9818273 1.2039362
EDUCATION_F7 - 12.9%                                      0.7203503 0.9558347 1.1827847
EDUCATION_FLess than 7%                                   0.9807723 0.9646758 1.2265028
YEAR_OF_DIAGNOSIS2005                                     0.8198842 0.9117062 1.1878732
YEAR_OF_DIAGNOSIS2006                                     0.9444563 0.8740331 1.1397441
YEAR_OF_DIAGNOSIS2007                                     0.6924422 0.9073276 1.1624795
YEAR_OF_DIAGNOSIS2008                                     1.0089340 0.7631507 0.9905430
YEAR_OF_DIAGNOSIS2009                                     0.7798901 0.9273074 1.1853465
YEAR_OF_DIAGNOSIS2010                                     1.4622858 0.8363819 1.0639200
YEAR_OF_DIAGNOSIS2011                                     1.8297836 0.8255072 1.0649236
YEAR_OF_DIAGNOSIS2012                                     0.8621574 0.7476048 0.9763881
YEAR_OF_DIAGNOSIS2013                                     0.4876133 0.8614047 1.1144022
YEAR_OF_DIAGNOSIS2014                                     0.7718355 0.9427790 1.2292779
YEAR_OF_DIAGNOSIS2015                                     0.7623553 0.7750758 1.0012052
SITE_TEXTC44.1 Eyelid                                     1.3008497 0.5408426 1.5369099
SITE_TEXTC44.2 External ear                               0.7500351 0.6618785 1.3509691
SITE_TEXTC44.3 Skin of ear and unspecified parts of face  0.7699909 0.6819103 1.1746338
SITE_TEXTC44.4 Skin of scalp and neck                     0.6492832 0.6619950 1.1599236
SITE_TEXTC44.5 Skin of trunk                              0.7980793 0.6779876 1.1577020
SITE_TEXTC44.6 Skin of upper limb and shoulder            1.0581502 0.6550458 1.1201232
SITE_TEXTC44.7 Skin of lower limb and hip                 0.7098408 0.6691291 1.1400798
SITE_TEXTC44.8 Overlapping lesion of skin                 1.2114767 0.5416408 0.9606891
SITE_TEXTC44.9 Skin, NOS                                  1.2112700 0.5947798 1.0103695
SITE_TEXTC51.9 Vulva, NOS                                 1.0316648 0.5669477 1.9290900
SITE_TEXTC52.9 Vagina, NOS                                1.0738527 0.4445504 2.3712894
SITE_TEXTC60.0 Prepuce                                    0.7020120 0.2009015 1.0450769
SITE_TEXTC60.9 Penis                                      0.6907555 0.3871140 1.2987113
GRADE_FGr III: Poor Diff                                  1.0021452 0.3191959 2.9075168
GRADE_FGr IV: Undiff/Anaplastic                           0.6759286 0.3733177 1.8623862
GRADE_F5                                                  0.5257933 0.3889252 1.8800219
GRADE_F6                                                  0.6249400 0.3844695 1.9388636
GRADE_F7                                                  0.8512837 0.4115456 2.8696860
GRADE_FNA/Unkown                                          0.5668372 0.3264711 1.5826278

Metastasis at Time of Diagnosis

LS0tCnRpdGxlOiAiQ0QzMCsgTHltcGhvcHJvbGlmZXJhdGl2ZSBEaXNvcmRlcnMiCmF1dGhvcjogIlJhbWllIEZhdGh5IgpkYXRlOiAiMTIvMTYvMjAxOSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogdW5pdGVkCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKLS0tCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCmxpYnJhcnkoImdncGxvdDIiKQpsaWJyYXJ5KCJkcGx5ciIpCmxpYnJhcnkoInRpZHlyIikKbGlicmFyeSgia25pdHIiKQpsaWJyYXJ5KCJ0YWJsZW9uZSIpCmxpYnJhcnkoImZvcmNhdHMiKQpsaWJyYXJ5KCJzdXJ2aXZhbCIpCmxpYnJhcnkoIm5wc3VydiIpCmxpYnJhcnkoImJyb29tIikKbGlicmFyeSgidGliYmxlIikKbGlicmFyeSgicmVhZHIiKQpsaWJyYXJ5KCJzdXJ2bWluZXIiKQpsaWJyYXJ5KCJzdHJpbmdyIikKCgprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1UUlVFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPVRSVUUpCiclIWluJScgPC0gZnVuY3Rpb24oeCx5KSEoJyVpbiUnKHgseSkpCmBgYAoKYGBge3J9CnBfdGFibGUgPC0gZnVuY3Rpb24odGFiX2RhdGEsIC4uLikgewogIHRhYl9kYXRhXzIgPC0gZGVwYXJzZShzdWJzdGl0dXRlKHRhYl9kYXRhKSkKICAKICB0YWJsZV9wIDwtIGRvLmNhbGwoQ3JlYXRlVGFibGVPbmUsIAogICAgICAgICAgICAgICAgICAgICBsaXN0KGRhdGEgPSBhcy5uYW1lKHRhYl9kYXRhXzIpLCBpbmNsdWRlTkEgPSBUUlVFLCAuLi4pKQogIHRhYmxlX3Bfb3V0IDwtIHByaW50KHRhYmxlX3AsCiAgICAgICAgICAgICAgICAgICAgICAgc2hvd0FsbExldmVscyA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRUb2dnbGUgPSBGQUxTRSkKICBrYWJsZSh0YWJsZV9wX291dCwKICAgICAgICBhbGlnbiA9ICJjIikKfQpgYGAKCmBgYHtyfQp1bmlfdmFyIDwtIGZ1bmN0aW9uKHRlc3RfdmFyLCBkYXRhX2ltcCkgewoKICAgICAgICAgICAgICAgIAogICAgICAgIGNhdCgiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIiwgdGVzdF92YXIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKCiAgICAgICAgCiAgICAgICAgZiA8LSBhcy5mb3JtdWxhKHBhc3RlKCJTdXJ2KERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUywgUFVGX1ZJVEFMX1NUQVRVUyA9PSAwKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLm5hbWUodGVzdF92YXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiIH4gIiApKQogICAgICAgIAogICAgICAgIGRhdGFfaW1wXzIgPC0gZGVwYXJzZShzdWJzdGl0dXRlKGRhdGFfaW1wKSkKCiAgICAgICAga21fZml0IDwtIGRvLmNhbGwoInN1cnZmaXQiLCBsaXN0KGZvcm11bGEgPSBmLCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSkpCgogICAgICAgIHByaW50KGttX2ZpdCkKICAgICAgICBjYXQoIlxuIikKCiAgICAgICAgcHJpbnQoc3VtbWFyeShrbV9maXQsIHRpbWVzID0gYygxMiwgMjQsIDM2LCA0OCwgNjAsIDEyMCkpKQogICAgICAgIGNhdCgiXG4iKQoKCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIFVuaXZhcmlhYmxlIENveCBQcm9wb3J0aW9uYWwgSGF6YXJkIE1vZGVsIGZvcjogIiwgdGVzdF92YXIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCgoKICAgICAgICBuX2xldmVscyA8LSBubGV2ZWxzKGRhdGFfaW1wW1t0ZXN0X3Zhcl1dKQoKICAgICAgICBpZihuX2xldmVscyA9PSAxKXsKICAgICAgICAgICAgICAgIHByaW50KCJPbmx5IG9uZSBsZXZlbCwgbm8gQ294IG1vZGVsIHBlcmZvcm1lZCIpCiAgICAgICAgICAgICAgICBjYXQoIlxuIikKCiAgICAgICAgfSBlbHNlIHsKCgogICAgICAgICAgICAgICAgY294X2ZpdCA8LSBkby5jYWxsKCJjb3hwaCIsIGxpc3QoZm9ybXVsYSA9IGYsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCiAgICAgICAgICAgICAgICBwcmludChzdW1tYXJ5KGNveF9maXQpKQogICAgICAgICAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGRvLmNhbGwoImdnZm9yZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QobW9kZWwgPSBjb3hfZml0LCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSkpCgoKICAgICAgICB9CgogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiICAgXG4jIyBVbmFkanVzdGVkIEthcGxhbiBNZWllciBPdmVyYWxsIFN1cnZpdmFsIEN1cnZlIGZvcjogIiwgdGVzdF92YXIpCgoKICAgICAgICBwIDwtIGRvLmNhbGwoImdnc3VydnBsb3QiLAogICAgICAgICAgICAgICAgICAgICBsaXN0KGZpdCA9IGttX2ZpdCwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLCBjZW5zb3IgPSBGQUxTRSwgbGVnZW5kID0gInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5ldHlwZSA9ICJzdHJhdGEiLCB4bGFiID0gIlRpbWUgKE1vbnRocykiKSkKCiAgICAgICAgcHJpbnQocCkKCn0KCmBgYAoKYGBge3IgY2h1bmsyLCBjYWNoZT1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSdoaWRlJ30KY29sLndpZHRoIDwtIGMoMzcsIDEwLCAxLCAxLCAzLCAxLCAyLCAxLCAyLCAxLCAxLCAxLCAxLCAxLCAxLCA4LCAyLCAyLCAyLCA0LCA0LCAxLCA0LCAxLCAxLAogICAgICAgICAgICAgICAxLCAzLCAyLCAyLCA4LCAyLCA1LCA1LCA1LCA0LCA1LCA1LCA1LDQsIDIsIDEsIDIsIDEsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDMsCiAgICAgICAgICAgICAgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDYsIDgsCiAgICAgICAgICAgICAgIDgsIDgsIDIsIDEsIDEsIDEsIDEsIDgsIDEsIDEsIDgsIDEsIDEsIDIsIDIsIDUsIDIsIDUsIDMsIDEsIDMsIDEsIDgsIDgsIDIsIDgsCiAgICAgICAgICAgICAgIDIsIDgsIDIsIDIsIDEsIDgsIDEsIDEsIDEsIDEsIDEsIDgsIDEsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDIsIDEsIDMsIDEsIDEsCiAgICAgICAgICAgICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEpCgpjb2wubmFtZXMuYWJyIDwtIGMoIlBVRl9DQVNFX0lEIiwgIlBVRl9GQUNJTElUWV9JRCIsICJGQUNJTElUWV9UWVBFX0NEIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0NEIiwKICAgICAgICAgICAgICAgICAgICJBR0UiLCAiU0VYIiwgIlJBQ0UiLCAiU1BBTklTSF9ISVNQQU5JQ19PUklHSU4iLCAiSU5TVVJBTkNFX1NUQVRVUyIsCiAgICAgICAgICAgICAgICAgICAiTUVEX0lOQ19RVUFSXzAwIiwgIk5PX0hTRF9RVUFSXzAwIiwgIlVSX0NEXzAzIiwgIk1FRF9JTkNfUVVBUl8xMiIsICJOT19IU0RfUVVBUl8xMiIsCiAgICAgICAgICAgICAgICAgICAiVVJfQ0RfMTMiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLCAiU0VRVUVOQ0VfTlVNQkVSIiwgIkNMQVNTX09GX0NBU0UiLAogICAgICAgICAgICAgICAgICAgIllFQVJfT0ZfRElBR05PU0lTIiwgIlBSSU1BUllfU0lURSIsICJMQVRFUkFMSVRZIiwgIkhJU1RPTE9HWSIsICJCRUhBVklPUiIsICJHUkFERSIsCiAgICAgICAgICAgICAgICAgICAiRElBR05PU1RJQ19DT05GSVJNQVRJT04iLCAiVFVNT1JfU0laRSIsICJSRUdJT05BTF9OT0RFU19QT1NJVElWRSIsCiAgICAgICAgICAgICAgICAgICAiUkVHSU9OQUxfTk9ERVNfRVhBTUlORUQiLCAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiUlhfU1VNTV9EWFNUR19QUk9DIiwgIlROTV9DTElOX1QiLAogICAgICAgICAgICAgICAgICAgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsCiAgICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiVE5NX0VESVRJT05fTlVNQkVSIiwgIkFOQUxZVElDX1NUQUdFX0dST1VQIiwgIkNTX01FVFNfQVRfRFgiLAogICAgICAgICAgICAgICAgICAgIkNTX01FVFNfRVZBTCIsICJDU19FWFRFTlNJT04iLCAiQ1NfVFVNT1JfU0laRUVYVF9FVkFMIiwgIkNTX01FVFNfRFhfQk9ORSIsICJDU19NRVRTX0RYX0JSQUlOIiwKICAgICAgICAgICAgICAgICAgICJDU19NRVRTX0RYX0xJVkVSIiwgIkNTX01FVFNfRFhfTFVORyIsICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzMiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl80IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzUiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl82IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNyIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl84IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfOSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEwIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzExIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTIiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMyIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE1IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTYiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTciLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xOCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE5IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIwIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjEiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMyIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzI0IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjUiLAogICAgICAgICAgICAgICAgICAgIkNTX1ZFUlNJT05fTEFURVNUIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TVVJHX1BSSU1fU0lURSIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwIiwgIlJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TQ09QRV9SRUdfTE5fU1VSIiwgIlJYX1NVTU1fU1VSR19PVEhfUkVHRElTIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLCAiUkVBRE1fSE9TUF8zMF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSRUFTT05fRk9SX05PX1NVUkdFUlkiLCAiRFhfUkFEX1NUQVJURURfREFZUyIsICJSWF9TVU1NX1JBRElBVElPTiIsICJSQURfTE9DQVRJT05fT0ZfUlgiLAogICAgICAgICAgICAgICAgICAgIlJBRF9UUkVBVF9WT0wiLCAiUkFEX1JFR0lPTkFMX1JYX01PREFMSVRZIiwgIlJBRF9SRUdJT05BTF9ET1NFX0NHWSIsICJSQURfQk9PU1RfUlhfTU9EQUxJVFkiLAogICAgICAgICAgICAgICAgICAgIlJBRF9CT09TVF9ET1NFX0NHWSIsICJSQURfTlVNX1RSRUFUX1ZPTCIsICJSWF9TVU1NX1NVUkdSQURfU0VRIiwgIlJBRF9FTEFQU0VEX1JYX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJFQVNPTl9GT1JfTk9fUkFESUFUSU9OIiwgIkRYX1NZU1RFTUlDX1NUQVJURURfREFZUyIsICJEWF9DSEVNT19TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9DSEVNTyIsCiAgICAgICAgICAgICAgICAgICAiRFhfSE9STU9ORV9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9IT1JNT05FIiwgIkRYX0lNTVVOT19TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9JTU1VTk9USEVSQVBZIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1RSTlNQTE5UX0VORE8iLCAiUlhfU1VNTV9TWVNURU1JQ19TVVJfU0VRIiwgIkRYX09USEVSX1NUQVJURURfREFZUyIsICJSWF9TVU1NX09USEVSIiwKICAgICAgICAgICAgICAgICAgICJQQUxMSUFUSVZFX0NBUkUiLCAiUlhfU1VNTV9UUkVBVE1FTlRfU1RBVFVTIiwgIlBVRl8zMF9EQVlfTU9SVF9DRCIsICJQVUZfOTBfREFZX01PUlRfQ0QiLAogICAgICAgICAgICAgICAgICAgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsICJQVUZfVklUQUxfU1RBVFVTIiwgIlJYX0hPU1BfU1VSR19QUklNX1NJVEUiLCAiUlhfSE9TUF9DSEVNTyIsCiAgICAgICAgICAgICAgICAgICAiUlhfSE9TUF9JTU1VTk9USEVSQVBZIiwgIlJYX0hPU1BfSE9STU9ORSIsICJSWF9IT1NQX09USEVSIiwgIlBVRl9NVUxUX1NPVVJDRSIsICJSRUZFUkVOQ0VfREFURV9GTEFHIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1NDT1BFX1JFR19MTl8yMDEyIiwgIlJYX0hPU1BfRFhTVEdfUFJPQyIsICJQQUxMSUFUSVZFX0NBUkVfSE9TUCIsICJUVU1PUl9TSVpFX1NVTU1BUlkiLAogICAgICAgICAgICAgICAgICAgIk1FVFNfQVRfRFhfT1RIRVIiLCAiTUVUU19BVF9EWF9ESVNUQU5UX0xOIiwgIk1FVFNfQVRfRFhfQk9ORSIsICJNRVRTX0FUX0RYX0JSQUlOIiwKICAgICAgICAgICAgICAgICAgICJNRVRTX0FUX0RYX0xJVkVSIiwgIk1FVFNfQVRfRFhfTFVORyIsICJOT19IU0RfUVVBUl8xNiIsICJNRURfSU5DX1FVQVJfMTYiLCAiTUVESUNBSURfRVhQTl9DT0RFIikKCgoKI1JlYWQgaW4gZGF0YSBmb3IgZWFjaCBzdWJzaXRlCmxpcCA8LSByZWFkX2Z3ZignTkNEQlBVRl9MaXAuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKbWVsYW5vbWEgPC0gcmVhZF9md2YoJ05DREJQVUZfTWVsYW5vbWEuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQogICAgICAgICAgICAgICAgICAgICAgIApza2luIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090U2tpbi4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpob2RnZXh0ciA8LSByZWFkX2Z3ZignTkNEQlBVRl9Ib2RnRXh0ci4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpob2RnbmRhbCA8LSByZWFkX2Z3ZignTkNEQlBVRl9Ib2RnTmRhbC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpOSExuZGFsIDwtIHJlYWRfZndmKCdOQ0RCUFVGX05ITE5kYWwuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKTkhMZXh0ciA8LSByZWFkX2Z3ZignTkNEQlBVRl9OSExFeHRyLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCgpicmVhc3QgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX0JyZWFzdC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgp2dWx2YSA8LSAgcmVhZF9md2YoJ05DREJQVUZfVnVsdmEuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKdmFnaW5hIDwtICByZWFkX2Z3ZignTkNEQlBVRl9WYWdpbmEuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKcGVuaXMgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1BlbmlzLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCm90bGV1ayA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdExldWsuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQogIApvdGhlcmFjdXRlbGV1ayAgPC0gcmVhZF9md2YoJ05DREJQVUZfT3RBY0xldWsuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQogIApBTEwgIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0FMeW1MZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCgojQ29tYmluZSBkYXRhIGZvciBhbGwgc3Vic2l0ZXMKZGF0IDwtIGJpbmRfcm93cyhsaXAsIG1lbGFub21hLCBza2luLCBob2RnZXh0ciwgaG9kZ25kYWwsIE5ITG5kYWwsIGJyZWFzdCwgCiAgICAgICAgICAgICAgICAgdnVsdmEsIHZhZ2luYSwgcGVuaXMsIE5ITGV4dHIsIG90bGV1aywgb3RoZXJhY3V0ZWxldWssIEFMTCkKCnJtKGxpcCwgbWVsYW5vbWEsIHNraW4sIGhvZGdleHRyLCBob2RnbmRhbCwgTkhMbmRhbCwgYnJlYXN0LCB2dWx2YSwgdmFnaW5hLCAKICAgcGVuaXMsIE5ITGV4dHIsIG90bGV1aywgb3RoZXJhY3V0ZWxldWssIEFMTCkKCnByaW1fc2l0ZV90ZXh0IDwtIGRhdGFfZnJhbWUoUFJJTUFSWV9TSVRFID0gYygKI05ITCBzaXRlcwoiQzAwMCIsIAoiQzAwMSIsIAoiQzAwMiIsIAoiQzAwMyIsIAoiQzAwNCIsIAoiQzAwNSIsIAoiQzAwNiIsIAoiQzAwOCIsCiJDMDA5IiwgCiJDMDE5IiwgCiJDMDIwIiwgCiJDMDIxIiwKIkMwMjIiLCAKIkMwMjMiLCAKIkMwMjQiLCAKIkMwMjgiLCAKIkMwMjkiLAoiQzAzMCIsCiJDMDMxIiwKIkMwMzkiLCAKIkMwNDAiLCAKIkMwNDEiLCAKIkMwNDgiLAoiQzA0OSIsIAoiQzA1MCIsIAoiQzA1MSIsIAoiQzA1MiIsIAoiQzA1OCIsIAoiQzA1OSIsCiJDMDYwIiwgCiJDMDYxIiwgCiJDMDYyIiwgCiJDMDY4IiwgCiJDMDY5IiwgCiJDMDc5IiwgIAoiQzA5OCIsCiJDMDk5IiwKIkMxMTEiLAoiQzE0MiIsCiJDMzAwIiwKIkMzNzkiLAoiQzQyMCIsCiJDNDIyIiwKIkM0MjQiLAoKI3NraW4vbWVsYW5vbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM0NDAiLCAiQzQ0MSIsICJDNDQyIiwgIkM0NDMiLCAiQzQ0NCIsICJDNDQ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM0NDYiLCAiQzQ0NyIsICJDNDQ4IiwgIkM0NDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JyZWFzdCAtIG5pcHBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzUwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdmFnaW5hL3Z1bHZhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNTEwIiwgIkM1MTEiLCAiQzUxMiIsICJDNTE4IiwgIkM1MTkiLCAiQzUyOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcGVuaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM2MDAiLCAiQzYwMSIsICJDNjAyIiwgIkM2MDgiLCAiQzYwOSIsICJDNjM5IiwKCiJDNzcwIiwKIkM3NzEiLAoiQzc3MiIsCiJDNzczIiwKIkM3NzQiLAoiQzc3NSIsCiJDNzc4IiwKIkM3NzkiKSwKClNJVEVfVEVYVCA9IGMoCiJDMDAuMCBFeHRlcm5hbCBMaXA6IFVwcGVyIE5PUyIsCiJDMDAuMSBFeHRlcm5hbCBMaXA6IExvd2VyIE5PUyIsCiJDMDAuMiBFeHRlcm5hbCBMaXA6IE5PUyIsCiJDMDAuMyBMaXA6IFVwcGVyIE11Y29zYSIsCiJDMDAuNCBMaXA6IExvd2VyIE11Y29zYSIsCiJDMDAuNSBMaXA6IE11Y29zYSBOT1MiLAoiQzAwLjYgTGlwOiBDb21taXNzdXJlIiwKIkMwMC44IExpcDogT3ZlcmxhcHBpbmciLAoiQzAwLjkgTGlwIE5PUyIsCiJDMDEuOSBUb25ndWU6IEJhc2UgTk9TIiwKIkMwMi4wIFRvbmd1ZTogRG9yc2FsIE5PUyIsCiJDMDIuMSBUb25ndWU6IEJvcmRlciwgVGlwIiwKIkMwMi4yIFRvbmd1ZTogVmVudHJhbCBOT1MiLAoiQzAyLjMgVG9uZ3VlOiBBbnRlcmlvciBOT1MiLAoiQzAyLjQgTGluZ3VhbCBUb25zaWwiLAoiQzAyLjggVG9uZ3VlOiBPdmVybGFwcGluZyIsCiJDMDIuOSBUb25ndWU6IE5PUyIsCiJDMDMuMCBHdW06IFVwcGVyIiwKIkMwMy4xIEd1bTogTG93ZXIiLAoiQzAzLjkgR3VtIE5PUyIsCiJDMDQuMCBNb3V0aDogQW50ZXJpb3IgRmxvb3IiLAoiQzA0LjEgTW91dGg6IExhdGVyYWwgRmxvb3IiLAoiQzA0LjggTW91dGg6IE92ZXJsYXBwaW5nIEZsb29yIiwKIkMwNC45IEZsb29yIG9mIE1vdXRoIE5PUyIsCiJDMDUuMCBIYXJkIFBhbGF0ZSIsCiJDMDUuMSBTb2Z0IFBhbGF0ZSBOT1MiLAoiQzA1LjIgVXZ1bGEiLAoiQzA1LjggUGFsYXRlOiBPdmVybGFwcGluZyIsCiJDMDUuOSBQYWxhdGUgTk9TIiwKIkMwNi4wIENoZWVrIE11Y29zYSIsCiJDMDYuMSBNb3V0aDogVmVzdGlidWxlIiwKIkMwNi4yIFJldHJvbW9sYXIgQXJlYSIsCiJDMDYuOCBNb3V0aDogT3RoZXIgT3ZlcmxhcHBpbmciLAoiQzA2LjkgTW91dGggTk9TIiwKIkMwNy45IFBhcm90aWQgR2xhbmQiLAogICJDMDkuOCBUb25zaWw6IE92ZXJsYXBwaW5nIiwKICAiQzA5LjkgVG9uc2lsIE5PUyIsCiAgIkMxMS4xIE5hc29waGFyeW54OiBQb3N0ZXIgV2FsbCIsIAogICJDMTQuMiBXYWxkZXllciBSaW5nIiwKICAiQzMwLjAgTmFzYWwgQ2F2aXR5IiwKICAiQzM3LjkgVGh5bXVzIiwKIkM0Mi4wIEJsb29kIiwKICAiQzQyLjIgU3BsZWVuIiwKIkM0Mi40IEhlbWF0b3BvaWV0aWMgTk9TIiwKCiAjc2tpbgoiQzQ0LjAgU2tpbiBvZiBsaXAsIE5PUyIsCiJDNDQuMSBFeWVsaWQiLAoiQzQ0LjIgRXh0ZXJuYWwgZWFyIiwKIkM0NC4zIFNraW4gb2YgZWFyIGFuZCB1bnNwZWNpZmllZCBwYXJ0cyBvZiBmYWNlIiwKIkM0NC40IFNraW4gb2Ygc2NhbHAgYW5kIG5lY2siLAoiQzQ0LjUgU2tpbiBvZiB0cnVuayIsCiJDNDQuNiBTa2luIG9mIHVwcGVyIGxpbWIgYW5kIHNob3VsZGVyIiwKIkM0NC43IFNraW4gb2YgbG93ZXIgbGltYiBhbmQgaGlwIiwKIkM0NC44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiBza2luIiwKIkM0NC45IFNraW4sIE5PUyIsIAoKI2JyZWFzdAoiQzUwLjAgTmlwcGxlIiwKCiN2dWx2YS92YWdpbmEKIkM1MS4wIExhYml1bSBtYWp1cyIsCiJDNTEuMSBMYWJpdW0gbWludXMiLAoiQzUxLjIgQ2xpdG9yaXMiLAoiQzUxLjggT3ZlcmxhcHBpbmcgbGVzaW9uIG9mIHZ1bHZhIiwKIkM1MS45IFZ1bHZhLCBOT1MiLAoiQzUyLjkgVmFnaW5hLCBOT1MiLAoKI3BlbmlzCiJDNjAuMCBQcmVwdWNlIiwKIkM2MC4xIEdsYW5zIHBlbmlzIiwKIkM2MC4yIEJvZHkgb2YgcGVuaXMiLAoiQzYwLjggT3ZlcmxhcHBpbmcgbGVzaW9uIG9mIHBlbmlzIiwKIkM2MC45IFBlbmlzIiwKIkM2My4yIFNjcm90dW0sIE5PUyIsCgogICJDNzcuMCBMeW1waCBOb2RlczogSGVhZEZhY2VOZWNrIiwKICAiQzc3LjEgSW50cmF0aG9yYWNpYyBMeW1waCBOb2RlcyIsCiAgIkM3Ny4yIEludHJhLWFiZG9taW5hbCBMeW1waE5vZGVzIiwKICAiQzc3LjMgTHltcGggTm9kZXMgb2YgYXhpbGxhIG9yIGFybSAiLAogICJDNzcuNCBMeW1waCBOb2RlczogTGVnIiwKICAiQzc3LjUgUGVsdmljIEx5bXBoIE5vZGVzIiwKICAiQzc3LjggTHltcGggTm9kZXM6IG11bHRpcGxlIHJlZ2lvbiIsCiAgIkM3Ny45IEx5bXBoIE5vZGUgTk9TIikpCgoKZGF0IDwtIG1lcmdlKGRhdCwgcHJpbV9zaXRlX3RleHQsIGJ5ID0gIlBSSU1BUllfU0lURSIsIGFsbC54ID0gVFJVRSkgCgpybShwcmltX3NpdGVfdGV4dCkKCiMgY29udmVydCBudW1lcmljIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBudW1lcmljIGNsYXNzCm51bV92YXJzIDwtIGMoIkFHRSIsICJDUk9XRkxZIiwgIlRVTU9SX1NJWkUiLCAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsICJEWF9SQURfU1RBUlRFRF9EQVlTIiwgICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLAogICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX0VMQVBTRURfUlhfREFZUyIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgCiAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIkRYX09USEVSX1NUQVJURURfREFZUyIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLAogICAgICAgICAgICAgICJSQURfTlVNX1RSRUFUX1ZPTCIpCgpkYXRbbnVtX3ZhcnNdIDwtIGxhcHBseShkYXRbbnVtX3ZhcnNdLCBhcy5udW1lcmljKQoKCiMgY29udmVydCBmYWN0b3IgdmFyaWFibGVzIGZyb20gY2hhcmFjdGVyIGNsYXNzIHRvIGZhY3RvciBjbGFzcwp2YXJzIDwtIG5hbWVzKGRhdCkKZmFjdF92YXJzIDwtIHZhcnNbISh2YXJzICVpbiUgbnVtX3ZhcnMpXSAjIGJhc2ljYWxseSBhbGwgb2YgdGhlIG5vbi1udW1lcmljcwoKZGF0W2ZhY3RfdmFyc10gPC0gbGFwcGx5KGRhdFtmYWN0X3ZhcnNdLCBhcy5jaGFyYWN0ZXIpCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuZmFjdG9yKQoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfVFlQRV9GID0gZmN0X3JlY29kZShGQUNJTElUWV9UWVBFX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tdW5pdHkgQ2FuY2VyIFByb2dyYW0iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVoZW5zaXZlIENvbW0gQ2EgUHJvZ3JhbSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjYWRlbWljL1Jlc2VhcmNoIFByb2dyYW0iID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlZ3JhdGVkIE5ldHdvcmsgQ2EgUHJvZ3JhbSIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9MT0NBVElPTl9GID0gZmN0X3JlY29kZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3IEVuZ2xhbmQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWRkbGUgQXRsYW50aWMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCBBdGxhbnRpYyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgTm9ydGggQ2VudHJhbCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgU291dGggQ2VudHJhbCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgTm9ydGggQ2VudHJhbCIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgU291dGggQ2VudHJhbCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdW50YWluIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjaWZpYyIgPSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dCBvZiBVUyIgPSAiMCIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfR0VPR1JBUEhZID0gZmN0X2NvbGxhcHNlKEZBQ0lMSVRZX0xPQ0FUSU9OX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vcnRoZWFzdCIgPSBjKCIxIiwgIjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCIgPSBjKCIzIiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWR3ZXN0IiA9IGMoIjQiLCAiNSIsICI2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCIgPSBjKCI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfRiA9IGN1dChBR0UsIGMoMCwgNTQsIDY0LCA3NCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfNDAgPSBjdXQoQUdFLCBjKDAsIDQwLCAxMDApKSkgJT4lCiAgICAgICAgbXV0YXRlKFNFWF9GID0gZmN0X3JlY29kZShTRVgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hbGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGZW1hbGUiID0gIjIiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBQ0VfRiA9IGZjdF9jb2xsYXBzZShSQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSIgPSBjKCIwMSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGFjayIgPSBjKCIwMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBc2lhbiIgPSBjKCIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE2IiwgIjE3IiwgIjIwIiwgIjIxIiwgIjIyIiwgIjI1IiwgIjI2IiwgIjI3IiwgIjI4IiwgIjMwIiwgIjMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMzIiLCAiOTYiLCAiOTciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIvVW5rIiA9IGMoIjAzIiwgIjk4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSElTUEFOSUMgPSBmY3RfY29sbGFwc2UoU1BBTklTSF9ISVNQQU5JQ19PUklHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9IGMoIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWNvZGUoSU5TVVJBTkNFX1NUQVRVUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lZGljYXJlIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIgR292ZXJubWVudCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOU1VSQU5DRV9GID0gZmN0X3JlbGV2ZWwoSU5TVVJBTkNFX0YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOQ09NRV9GID0gZmN0X3JlY29kZShNRURfSU5DX1FVQVJfMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiAkMzgsMDAwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDM4LDAwMCAtICQ0Nyw5OTkiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNDgsMDAwIC0gJDYyLDk5OSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ2MywwMDAgKyIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoRURVQ0FUSU9OX0YgPSBmY3RfcmVjb2RlKE5PX0hTRF9RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIxJSBvciBtb3JlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMyAtIDIwLjklIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3IC0gMTIuOSUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiA3JSIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoVV9SX0YgPSBmY3RfY29sbGFwc2UoVVJfQ0RfMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRybyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXJiYW4iID0gYygiNCIsICI1IiwgIjYiLCAiNyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVyYWwiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQ0xBU1NfT0ZfQ0FTRV9GID0gZmN0X2NvbGxhcHNlKENMQVNTX09GX0NBU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxfUGFydF9QcmltID0gYygiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE0IiwgIjIwIiwgIjIxIiwgIjIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcl9GYWNpbGl0eSA9IGMoIjAwIikpKSAlPiUKICAgICAgICBtdXRhdGUoR1JBREVfRiA9IGZjdF9yZWNvZGUoR1JBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSTogV2VsbCBEaWZmIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSTogTW9kIERpZmYiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElJSTogUG9vciBEaWZmIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJVjogVW5kaWZmL0FuYXBsYXN0aWMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BL1Vua293biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmY3RfaW5mcmVxKEhJU1RPTE9HWSkpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRiA9IGZhY3RvcihISVNUT0xPR1lfRikpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRl9MSU0gPSBmY3RfbHVtcChISVNUT0xPR1lfRiwgcHJvcCA9IDAuMDUpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fVCA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVsZXZlbChUTk1fQ0xJTl9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX04gPSBmY3RfcmVjb2RlKFROTV9DTElOX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9NID0gZmN0X3JlY29kZShUTk1fQ0xJTl9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfVCA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVsZXZlbChUTk1fUEFUSF9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX04gPSBmY3RfcmVjb2RlKFROTV9QQVRIX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9NID0gZmN0X3JlY29kZShUTk1fUEFUSF9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9DTElOX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOUyA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmVzaWR1YWwiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzaWR1YWwsIE5PUyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBSZXNpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWNyb3Njb3BpYyBSZXNpZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgZXZhbHVhYmxlIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmciID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOU19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcvVW5rL05BIiA9IGMoIjciLCAiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBRE1fSE9TUF8zMF9EQVlTX0YgPSBmY3RfcmVjb2RlKFJFQURNX0hPU1BfMzBfREFZUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnX29yX05vX1JlYWRtaXQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVucGxhbl9SZWFkbWl0X1NhbWUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsYW5fUmVhZG1pdF9TYW1lIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuVW5wbGFuX1NhbWUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX1NVTU1fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtIFJhZGlhdGlvbiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2FjdGl2ZSBJbXBsYW50cyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2lzb3RvcGVzIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlYW0gKyBJbXAgb3IgSXNvdG9wZXMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaWF0aW9uLCBOT1MiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzMwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl8zMF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV8zMCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF8zMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzkwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl85MF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV85MCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF85MCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiA9IGZjdF9yZWNvZGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdfTHltcGhWYXNjX0ludiIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb3NfTHVtcGhWYXNjX0ludiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GID0gZmN0X3JlY29kZShSWF9IT1NQX1NVUkdfQVBQUl8yMDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfQXNzaXN0IiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfdG9fT3BlbiIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5kb19MYXBfdG9fT3BlbiIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5fVW5rbm93biIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9ICJBbGwiKSAlPiUKICAgICAgICBtdXRhdGUoQWxsID0gZmFjdG9yKEFsbCkpICU+JQogICAgICAgIG11dGF0ZShSRUFTT05fRk9SX05PX1NVUkdFUllfRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcGVyZm9ybWVkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZyBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZywgcHQgZGllZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHVuayBpZiBkb25lIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShTVVJHRVJZX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1RGID0gY2FzZV93aGVuKFNVUkdFUllfWU4gPT0gIlllcyIgfiBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUkdFUllfWU4gPT0gIk5vIiB+IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQSkpICAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT05fRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkIGR1ZSB0byBwdCBmYWN0b3JzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSYWQsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBwdCByZWZ1c2VkIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUkFESUFUSU9OX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkVBU09OX0ZPUl9OT19SQURJQVRJT04gPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR1JBRF9TRVFfRiA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHUkFEX1NFUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgb3IgU3VyZyBvciBSYWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBTdXJnIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgYmVmb3JlIFJhZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIHBsdXMgb3RoZXIiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFRyZWF0bWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVEgPSBmY3RfcmVsZXZlbChTVVJHX1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIikpICU+JQogICAgICAgIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0NIRU1PLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMDAiLCAiODIiLCAiODUiLCAiODYiLCAiODciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIwMSIsICIwMiIsICIwMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiA9IGMoIjg4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSU1NVU5PX1lOID0gZmN0X2NvbGxhcHNlKFJYX1NVTU1fSU1NVU5PVEhFUkFQWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAwIiwgIjgyIiwgIjg1IiwgIjg2IiwgIjg3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMDEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIgPSBjKCI4OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUV9DID0gaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZywgTm8gcmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQsIE5vIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBTdXJnLCBObyBSYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnLCBObyByYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCwgTm8gU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFN1cmcsIE5vIFJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiKSkpKSkpKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRX0MgPSBmY3RfaW5mcmVxKFNVUkdfUkFEX1NFUV9DKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGFzLm51bWVyaWMoVFVNT1JfU0laRSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBpZmVsc2UoVF9TSVpFID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFR1bW9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID4gMCAmIFRfU0laRSA8IDEwIHwgVF9TSVpFID09IDk5MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwgMSBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMTAgJiBUX1NJWkUgPCAyMCB8IFRfU0laRSA9PSA5OTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMS0yIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMjAgJiBUX1NJWkUgPCAzMCB8IFRfU0laRSA9PSA5OTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjItMyBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAzMCAmIFRfU0laRSA8IDQwIHwgVF9TSVpFID09IDk5NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMtNCBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNDAgJiBUX1NJWkUgPCA1MCB8IFRfU0laRSA9PSA5OTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC01IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNTAgJiBUX1NJWkUgPCA2MCB8IFRfU0laRSA9PSA5OTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjUtNiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA2MCAmIFRfU0laRSA8PSA5ODcgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfU0laRSA9PSA5ODAgfCBUX1NJWkUgPT0gOTg5IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NJWkUgPT0gOTk3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI+NiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA9PSA5ODggfCBUX1NJWkUgPT0gOTk5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTkFfdW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc2NvcGljIGZvY3VzIikpKSkpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGZhY3RvcihUX1NJWkUpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gZmN0X3JlbGV2ZWwoVF9TSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFR1bW9yIiwgIk1pY3Jvc2NvcGljIGZvY3VzIiwgIjwgMSBjbSIsICIxLTIgY20iLCAiMi0zIGNtIiwgIjMtNCBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LTUgY20iLCAiNS02IGNtIiwgIj42IGNtIiwgIk5BX3VuayIpKSAlPiUKICAgICAgICBtdXRhdGUobWV0c19hdF9keCA9IGNhc2Vfd2hlbihDU19NRVRTX0RYX0xVTkcgPT0gIjEiIH4gIkx1bmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfQk9ORSA9PSAiMSIgfiAiQm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9CUkFJTiA9PSAiMSIgfiAiQnJhaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfTElWRVIgPT0gIjEiIH4gIkxpdmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gIk5vbmUvT3RoZXIvVW5rL05BIikpICU+JQogICAgICAgIG11dGF0ZShNRURJQ0FJRF9FWFBOX0NPREUgPSBmY3RfcmVjb2RlKE1FRElDQUlEX0VYUE5fQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uLUV4cGFuc2lvbiBTdGF0ZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXBwcmVzc2VkIGZvciBBZ2VzIDAgLSAzOSIgPSAiOSIpKSAgJT4lCiAgICAgICAgbXV0YXRlKEVYUE5fR1JPVVAgPSAgY2FzZV93aGVuKE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTQiLCAiMjAxNSIpIH4gIlBvc3QtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIikgfiAiUHJlLUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIsICIyMDE0IiwgIjIwMTUiKSB+ICJQb3N0LUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsICIyMDA5IikgfiAiUHJlLUV4cGFuc2lvbiIsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJOb24tRXhwYW5zaW9uIFN0YXRlIikgfiAiUHJlLUV4cGFuc2lvbiIsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIikgfiAiUHJlLUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDE0IiwgIjIwMTUiKSB+ICJFeGNsdWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSA9PSAiU3VwcHJlc3NlZCBmb3IgQWdlcyAwIC0gMzkiIH4gIkV4Y2x1ZGUiKSkgJT4lCiAgCiAgbXV0YXRlKHByZV8yMDE0ID0gWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIikpICU+JQogIAogIG11dGF0ZShtZXRzX2F0X2R4X0YgPSBpZmVsc2UobWV0c19hdF9keCA9PSAiTm9uZS9PdGhlci9VbmsvTkEiLCBGQUxTRSwgVFJVRSkpICU+JSAKICAKICBtdXRhdGUoVHhfWU4gPSBpZmVsc2UoU1VSR19SQURfU0VRID09ICJObyBUcmVhdG1lbnQiICYgQ0hFTU9fWU4gPT0gIk5vIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgIElNTVVOT19ZTiA9PSAiTm8iLCBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShDSEVNT19ZTiA9PSAiVWtuIiwgTkEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSkpKQoKZmFjdF92YXJzXzIgPC0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiQUdFX0YiLCAiU0VYX0YiLCAiUkFDRV9GIiwKICAgICAgICAgICAgICAgICAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLAogICAgICAgICAgICAgICAgICJDRENDX1RPVEFMX0JFU1QiLCAiQ0xBU1NfT0ZfQ0FTRV9GIiwgIllFQVJfT0ZfRElBR05PU0lTIiwgIlBSSU1BUllfU0lURSIsICJISVNUT0xPR1kiLAogICAgICAgICAgICAgICAgICJCRUhBVklPUiIsICJHUkFERV9GIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLCAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLAogICAgICAgICAgICAgICAgICJNQVJHSU5TIiwgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJtZXRzX2F0X2R4IikKCgpkYXQgPC0gZGF0ICU+JQogICAgICAgIG11dGF0ZV9hdChmYWN0X3ZhcnNfMiwgZnVucyhmYWN0b3IoLikpKQoKYGBgCgoKIyBFeHRyYWN0IERhdGEgb2YgSW50ZXJlc3QKCmBgYHtyfQoKCiMgTm9uLUhvZGdraW4gTHltcGhvbWEgU2l0ZXMKc2l0ZV9jb2RlIDwtIGMoIAojYWRkaXRpb25hbCBzaXRlcwoKICNsaXAgIAogICJDMDAwIiwgIkMwMDEiLCAiQzAwMiIsICJDMDAzIiwgIkMwMDQiLCAiQzAwNSIsIkMwMDYiLCAiQzAwOCIsIkMwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojc2tpbi9tZWxhbm9tYQogICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjYnJlYXN0IC0gbmlwcGxlCiAgIkM1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3ZhZ2luYS92dWx2YQogICJDNTEwIiwgIkM1MTEiLCAiQzUxMiIsICJDNTE4IiwgIkM1MTkiLCAiQzUyOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojcGVuaXMKICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIpCgojbXljb3NpcyBmdW5nb2lkZXMsIFNlemFyeSBzeW5kcm9tZSwgc3ViY3V0YW5lb3VzIHBhbm5pY3VsaXRpcy1saWtlIFQtY2VsbCBseW1waG9tYSwKI2N1dGFuZW91cyBULWNlbGwgbHltcGhvbWEsIE5PUywgcHJpbWFyeSBjdXRhbmVvdXMgQ0QzMCtULWNlbGwgbHltcGhvbWEsIAojTksvVC1jZWxsIGx5bXBob21hLCBwcmltYXJ5IGN1dGFuZW91cyBnYW1tYS1kZWx0YSBULWNlbGwgbHltcGhvbWEsIAojYW5kIGJsYXN0aWMgTksgY2VsbCBseW1waG9tYSwgcmVzcGVjdGl2ZWx5CgojIjk3MDAiID0gTXljb3NpcyBGdW5nb2lkZXMKICAjIHBhZ2V0b2lkIHJldGljdWxvc2lzCgojIjk3MDEiID0gU2V6YXJ5IFN5bmRyb21lCiAgIyBTZXphcnkgZGlzZWFzZQoKIyI5NzA4IiA9IFN1YmN1dGFuZW91cyBwYW5uaWN1bGl0aXNsaWtlIFQtY2VsbCBseW1waG9tYQoKIyI5NzA5IiA9IEN1dGFuZW91cyBULWNlbGwgbHltcGhvbWEsIE5PUyAKICAjIEN1dGFuZW91cyBseW1waG9tYSwgTk9TIChDNDQuXyk7IFByaW1hcnkgY3V0YW5lb3VzIENENC1wb3NpdGl2ZSBzbWFsbC9tZWRpdW0KICAjIFQtY2VsbCBseW1waG9tYTsgUHJpbWFyeSBjdXRhbmVvdXMgQ0Q4LXBvc2l0aXZlIGFnZ3Jlc3NpdmUKICAjIGVwaWRlcm1vdHJvcGljIGN5dG90b3hpYyBULWNlbGwgbHltcGhvbWEKCiMiOTcxOCIgPSBQcmltYXJ5IGN1dGFuZW91cyBDRDMwKyBULWNlbGwgbHltcGhvcHJvbGlmZXJhdGl2ZSBkaXNvcmRlciAKICAjIEx5bXBob21hdG9pZCBwYXB1bG9zaXMgKEM0NC5fKSwgUHJpbWFyeSBjdXRhbmVvdXMgYW5hcGxhc3RpYyBsYXJnZSBjZWxsLAogICMgbHltcGhvbWEgKEM0NC5fKSwgUHJpbWFyeSBjdXRhbmVvdXMgQ0QzMCsgbGFyZ2UgVC1jZWxsIGx5bXBob21hIChDNDQuXykKCgojIjk3MjYiID0gUHJpbWFyeSBjdXRhbmVvdXMgZ2FtbWEtZGVsdGEgVC1jZWxsIGx5bXBob21hCgpoaXN0b19jb2RlIDwtIGMoIjk3MTgiKQoKYmVoYXZpb3JfY29kZSA8LSBjKCIzIikKCmRhdGEgPC0gZGF0ICU+JQogICAgICAgIGZpbHRlcihCRUhBVklPUiAlaW4lIGJlaGF2aW9yX2NvZGUpICU+JQogICAgICAgIGZpbHRlcihQUklNQVJZX1NJVEUgJWluJSBzaXRlX2NvZGUpICU+JQogICAgICAgIGZpbHRlcihISVNUT0xPR1kgJWluJSBoaXN0b19jb2RlKSAlPiUKICAgICAgICAjZmlsdGVyKEFHRSA+PSAxOCkgJT4lCiAgICAgICAgZmlsdGVyKGlzLm5hKFBVRl9WSVRBTF9TVEFUVVMpID09IEZBTFNFKSAlPiUKICAgICAgICBmaWx0ZXIoaXMubmEoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTKSA9PSBGQUxTRSkgICU+JQogICAgICAgIGZpbHRlcihTRVFVRU5DRV9OVU1CRVIgPT0gIjAwIikgCgojZmlsZV9wYXRoIDwtIGMoIi9Vc2Vycy9iZWFzdGF0bGlmZS9Hb29nbGUgRHJpdmUvUGVubi9SZXNlYXJjaC9CYXJiaWVyaS9OQ0RCIikKI3NhdmUoZGF0YSwKIyAgICAgIGZpbGUgPSBwYXN0ZTAoZmlsZV9wYXRoLCAiL0NUQ0xfZGF0YS5SZGEiKSkKYGBgCgpgYGB7ciBsb2FkRGF0YX0KI2xvYWQoIk1GX2RhdGEuUmRhIikKYGBgCgoKRGF0YSBpbmNsdWRpbmcgc2tpbiB0dW1vcnMgd2FzIG9idGFpbmVkIGZyb20gdGhlIE5DQkQgb24gT2N0b2JlciA3LCAyMDE5LiBDYXNlcyB0aGF0IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBhbmFseXNpcyB3ZXJlIHRob3NlIHdpdGg6CgoxLiBTaXRlIGNvZGVzOiBgciBzaXRlX2NvZGVgCjIuIEhpc3RvbG9neSBjb2RlczogYHIgaGlzdG9fY29kZWAKMy4gQmVoYXZpb3IgY29kZXM6IGByIGJlaGF2aW9yX2NvZGVgCgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGRpZG4ndCBoYXZlIHZhbHVlcyBmb3IgZWl0aGVyIGZvbGxvdyB1cCBvciB2aXRhbCBzdGF0dXMuCgpQYXRpZW50cyB3ZXJlIGV4Y2x1ZGVkIGlmIHRoZXkgaGFkIHN1cmdlcnkgdG8gYSBkaXN0YW50IHNpdGUgdXNpbmcgYFJYX1NVTU1fU1VSR19PVEhfUkVHRElTYC4gVGhpcyB3YXMgZG9uZSB0byBhdm9pZCBjb25mb3VuZGluZyBvZiBkaWZmZXJlbnQgc3VyZ2ljYWwgcHJvY2VkdXJlcy4gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBzdXJnZXJ5IGF0IHRoZSBwcmltYXJ5IHNpdGUuIFRoZXNlIGRpc3RhbnQgc2l0ZSBzdXJnZXJpZXMgd2VyZSBiZWluZyBjb3VudGVkIGluIHRoZSBzdXJnZXJ5L3JhZGlhdGlvbiBzZXF1ZW5jZSBhbmQgdGh1cyB0byBzaW1wbGlmeSBhbmFseXNpcyB0aGV5IHdlcmUgcmVtb3ZlZC4gCgpgYGB7cn0KCmRhdGEgJT4lCiAgICAgICAgQ3JlYXRlVGFibGVPbmUoZGF0YSA9IC4sCiAgICAgICAgICAgICAgICAgICAgIHZhcnMgPSBjKCJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIpLAogICAgICAgICAgICAgICAgICAgICBpbmNsdWRlTkEgPSBUUlVFKSAlPiUKICAgICAgICBwcmludCguLAogICAgICAgICAgICAgIHNob3dBbGxMZXZlbHMgPSBUUlVFKQoKZGF0YSA8LSBkYXRhICU+JQogICAgICAgIGZpbHRlcihSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyA9PSAiMCIpIApgYGAKCgpSYWNlIHdhcyBncm91cGVkIGFzIHdoaXRlLCBibGFjaywgYXNpYW4sIG90aGVyL3Vua25vd24KU3RhZ2Ugd2FzIGdyb3VwZWQgaW50byAwLCBJLCBJSSwgSUlJLCBJViwgTkFfVW5rbm93biwgc3RhZ2UgMCB3YXMgcmVtb3ZlZApXaGV0aGVyIHN1cmdlcnkgd2FzIHBlcmZvcm1lZCB3YXMgYmFzZWQgb24gdGhlIGBSRUFTT05fRk9SX05PX1NVUkdFUllgIHZhcmlhYmxlLiBUaGUgYFNVUkdFUllfWU5gIHZhcmlhYmxlIHdhcyBjbGFzc2lmaWVkIGFzICdZZXMnLCAnTm8nLCBvciAnVW5rbm93bicuCgoKV2hldGhlciByYWRpYXRpb24gd2FzIHBlcmZvcm1lZCB3YXMgYmFzZWQgb24gdGhlIGBSRUFTT05fRk9SX05PX1JBRElBVElPTmAgdmFyaWFibGUuIFRoZSBgUkFESUFUSU9OX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCgojVGFibGUgb2YgdmFyaWFibGVzIGZvciBhbGwgY2FzZXM6CgpgYGB7cn0KZGF0YSA8LSBkYXRhICU+JSBkcm9wbGV2ZWxzKCkKCnBfdGFibGUoZGF0YSwKICAgICAgICB2YXJzID0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgICJBR0UiLCAiQUdFX0YiLCAiQUdFXzQwIiwKICAgICAgICAgICAgICAgICAiU0VYX0YiLCAiUkFDRV9GIiwgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgCiAgICAgICAgICAgICAgICAgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwKICAgICAgICAgICAgICAgICAiU0lURV9URVhUIiwgICJISVNUT0xPR1kiLCAiQkVIQVZJT1IiLCAiR1JBREVfRiIsIAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlNVUkdFUllfWU4iLCAiUkFESUFUSU9OX1lOIiwgIkNIRU1PX1lOIiwgIklNTVVOT19ZTiIsICJUeF9ZTiIsICJtZXRzX2F0X2R4IiwKICAgICAgICAgICAgICAgICAiTUVESUNBSURfRVhQTl9DT0RFIiwgIkVYUE5fR1JPVVAiLCAiWUVBUl9PRl9ESUFHTk9TSVMiKSkKYGBgCgoKCmBgYHtyfQoKcHJlRXhwTWVkaWNhcmUgIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iICYgSU5TVVJBTkNFX0YgPT0gIk1lZGljYXJlIikpCnBvc3RFeHBNZWRpY2FyZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIgJiBJTlNVUkFOQ0VfRiA9PSAiTWVkaWNhcmUiKSkKCiMgcCA9IDAuMjUgd2hlbiBjb21wYXJpbmcgY2hhbmdlIGluIHByb3BvcnRpb24gb2YgcGF0aWVudHMgd2l0aCBNZWRpY2FyZSBiZWZvcmUgYW5kIGFmdGVyIEFDQSBleHBhbnNpb24KcHJvcC50ZXN0KGMocHJlRXhwTWVkaWNhcmUsIHBvc3RFeHBNZWRpY2FyZSksIAogICAgICAgICAgYyhucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQcmUtRXhwYW5zaW9uIikpLCBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIpKSkpCgpwcmVFeHBOb0luc3VyYW5jZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQcmUtRXhwYW5zaW9uIikgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKElOU1VSQU5DRV9GID09ICJOb25lIikpCnBvc3RFeHBOb0luc3VyYW5jZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIpICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoSU5TVVJBTkNFX0YgPT0gIk5vbmUiKSkKCiMgU2lnbmlmaWNhbnQgZGVjcmVhc2UgaW4gdGhlIG92ZXJhbGwgcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aXRob3V0IGluc3VyYW5jZSBhZnRlciBBQ0EgZXhwYW5zaW9uIApwcm9wLnRlc3QoYyhwcmVFeHBOb0luc3VyYW5jZSwgcG9zdEV4cE5vSW5zdXJhbmNlKSwgCiAgICAgICAgICBjKG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSksIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikpKSkKCnBfdGFibGUobm9fRXhjbHVkZXMsIHN0cmF0YSA9ICJFWFBOX0dST1VQIiwgdmFycyA9ICJEWF9SWF9TVEFSVEVEX0RBWVMiKQoKZGF0YSA8LSBkYXRhICU+JSBtdXRhdGUoSW5zdXJlZCA9IElOU1VSQU5DRV9GICE9ICJVbmtub3duIikKCmBgYAoKCgoKI0thcGxhbiBNZWllciBBbmFseXNpcwoKCiMjQWxsCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBbGwiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBUeXBlCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX1RZUEVfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IExvY2F0aW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9MT0NBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgR2VvZ3JhcGh5CgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9HRU9HUkFQSFkiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNBZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFHRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQWdlIEdyb3VwCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFHRV80MCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0dlbmRlcgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU0VYX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSQUNFX0YKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJBQ0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0hpc3BhbmljCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJISVNQQU5JQyIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0luc3VyYW5jZSBTdGF0dXMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIklOU1VSQU5DRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjT3ZlcmFsbCBTdXJ2aXZhbCBwcmUvcG9zdC1BQ0EgZXhwYW5zaW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJFWFBOX0dST1VQIiwgZGF0YV9pbXAgPSBub19FeGNsdWRlcykKYGBgCgoKPCEtLSAjI0luY29tZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIGNsYXNzKGRhdGEkSU5DT01FX0YpIC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiSU5DT01FX0YiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiMjRWR1Y2F0aW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJFRFVDQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1VyYmFuL1J1cmFsCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJVX1JfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsYXNzICh0cmVhdG1lbnQgYXQgcGVyZm9ybWluZyBmYWNpbGl0eSkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNMQVNTX09GX0NBU0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1llYXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIllFQVJfT0ZfRElBR05PU0lTIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUHJpbWFyeSBTaXRlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTSVRFX1RFWFQiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjSGlzdG9sb2d5CgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiSElTVE9MT0dZX0ZfTElNIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCjwhLS0gIyNCZWhhdmlvciAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiQkVIQVZJT1IiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiMjR3JhZGUKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJHUkFERV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgVCBTdGFnZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIE4gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKPCEtLSAjI0NsaW5pY2FsIE0gU3RhZ2UgLS0+Cgo8IS0tIGBgYHtyfSAtLT4KPCEtLSB1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX00iLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiMjQ2xpbmljYWwgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBUIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBOIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9OIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBNIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zIFllcy9ObwpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOU19ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojIzMwIERheSBSZWFkbWlzc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gVHlwZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfU1VNTV9SQURJQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNMeW1waG92YXNjdWxhciBJbnZhc2lvbgoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNFbmRvc2NvcGljL1JvYm90aWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1N1cmdlcnkgUmFkaWF0aW9uIFNlcXVlbmNlIAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR19SQURfU0VRIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNVUkdFUllfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gWWVzL05vCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQURJQVRJT05fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDaGVtbyBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNIRU1PX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI1RyZWF0bWVudCBZZXMvTm8KYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVHhfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNZXRhc3Rhc2VzIGF0IER4CmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIm1ldHNfYXRfZHhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjVHVtb3IgU2l6ZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVF9TSVpFIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojVHVtb3Igc3BlY2lmaWMgVmFyaWFibGVzCgoKIyMjTm9kZSBTaXplCgoKI0NveCBQcm9wb3J0aW9uYWwgSGF6YXJkIFJhdGlvCgojI01vZGVsICMxCgojIyNGdWxsIGFuYWx5c2lzCgpgYGB7cn0KbW9kZWxfb25lIDwtIGNveHBoKFN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApCiAgICAgICAgICAgICAgICAgICAgIH4gU1VSR19SQURfU0VRICsgSU5TVVJBTkNFX0YgKyBBR0UgKyBTRVhfRiArIFJBQ0VfRiArIElOQ09NRV9GICsgVV9SX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GLAogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSkKbW9kZWxfb25lICU+JSBzdW1tYXJ5KCkKCgpgYGAKCiMjI1N1bW1hcnkgb2YgTW9kZWwKCmBgYHtyfQptb2RlbF9vbmUgJT4lCiAgICAgICAgdGlkeSguLCBleHBvbmVudGlhdGUgPSBUUlVFKSAlPiUKICAgICAgICBzZWxlY3QodGVybSwgZXN0aW1hdGUsIGNvbmYubG93LCBjb25mLmhpZ2gsIHAudmFsdWUpICU+JQogICAgICAgIHJlbmFtZShWYXJpYWJsZSA9IHRlcm0sCiAgICAgICAgICAgICAgIEhhemFyZF9SYXRpbyA9IGVzdGltYXRlKSAlPiUKICAgICAgICB0YmxfZGYgJT4lCiAgICAgICAgcHJpbnQobiA9IG5yb3coLikpCgpgYGAKCiMjIExpbmVhciBSZWdyZXNzaW9uIApgYGB7cn0KCiNvbmx5IGluY2x1ZGUgcm93cyB3aXRoIGtub3duIHRyZWF0bWVudCBpbmZvcm1hdGlvbiwgbiA9IDgyCmRhdGEyIDwtIGRhdGEgJT4lIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iICYgUkFESUFUSU9OX1lOICE9ICJVa24iCiAgICAgICAgICAgICAgICAgICAgICAgICAmIENIRU1PX1lOICE9ICJVa24iKQoKIyBpbmNsdWRlIG9ubHkgdmFyaWFibGVzIHdpdGggZGF0YSBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IDc1JSBjYXNlcyAKIyBmcm9tIHRoZSBmb2xsb3dpbmcgc2V0IG9mIHZhcmlhYmxlcyBvZiBpbnRlcmVzdDoKCiMjIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0dFT0dSQVBIWSArIENST1dGTFkgKyAKIyMgICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgCiMjICAgICAgICAgICAgICAgICBDSEVNT19ZTiArIFJBRElBVElPTl9ZTiArIFNVUkdFUllfWU4gKyBJTU1VTk9fWU4gKwojIyAgICAgICAgICAgICAgICAgQUdFICsgU0VYX0YgKyBSQUNFX0YgKyBISVNQQU5JQyArIElOU1VSQU5DRV9GICsgSU5DT01FX0YgKyAKIyMgICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMgKyBTSVRFX1RFWFQgKyBHUkFERV9GCgpsZW5ndGgod2hpY2goaXMubmEoZGF0YTIkRkFDSUxJVFlfTE9DQVRJT05fRikpKQoKIyBleGNsdWRlZCB0aGUgZm9sbG93aW5nIGluIHRoaXMgYW5hbHlzaXMgZHVlIHRvIG1pc3NpbmcgZGF0YTogCiMgIERYX1NUQUdJTkdfUFJPQ19EQVlTCgpmaXRfc3VydiA8LSBsbShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMgfgogICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIAogICAgICAgICAgICAgICAgIENIRU1PX1lOICsgUkFESUFUSU9OX1lOICsgU1VSR0VSWV9ZTiArIElNTVVOT19ZTiArCiAgICAgICAgICAgICAgICAgQUdFICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArIElOQ09NRV9GICsgCiAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCArIEdSQURFX0YsCiAgIGRhdGEgPSBkYXRhMikKCnN1bW1hcnkoZml0X3N1cnYpICMgUl4yID0gMC4zMjQ3LCBwIDwgMi4yZS0xNgoKIyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3ZXJlIGV4Y2x1ZGVkIHRvIAojIGltcHJvdmUgdGhlIFItc3F1YXJlZCBvZiB0aGUgcmVncmVzc2lvbiAoaW5pdGlhbGx5IFJeMiA9ICk6CiMgU0lURV9URVhULCBGQUNJTElUWV9HRU9HUkFQSFkvTE9DQVRJT04sIENST1dGTFksIEhJU1BBTklDCmBgYAoKIyBQcmVkaWN0aW9uIExvZ2lzdGljIFJlZ3Jlc3Npb24gTW9kZWxzCgojIyBTdXJnZXJ5CmBgYHtyfQoKbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iKSAlPiUgCiAgZHJvcGxldmVscygpICU+JSAKICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGFzLmxvZ2ljYWwoU1VSR0VSWV9ZTikpCgpmaXRfc3VyZyA8LSBnbG0oU1VSR19URiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCnN1bW1hcnkoZml0X3N1cmcpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfc3VyZyksIGNvbmZpbnQuZGVmYXVsdChmaXRfc3VyZywgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgQ2hlbW8KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoQ0hFTU9fWU4gIT0gIlVrbiIpICU+JSAKICBkcm9wbGV2ZWxzKCkgJT4lIAogIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9yZWNvZGUoQ0hFTU9fWU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgPSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiID0gIlllcyIpKSAlPiUgCiAgbXV0YXRlKENIRU1PX1lOID0gYXMuaW50ZWdlcihDSEVNT19ZTikpICU+JSAKICBtdXRhdGUoQ0hFTU9fWU4gPSBDSEVNT19ZTiAtIDEpCgpmaXRfY2hlbW8gPC0gZ2xtKENIRU1PX1lOIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfY2hlbW8pCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfY2hlbW8pLCBjb25maW50LmRlZmF1bHQoZml0X2NoZW1vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBSYWRpYXRpb24KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoUkFESUFUSU9OX1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkgJT4lCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGZjdF9yZWNvZGUoUkFESUFUSU9OX1lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJZZXMiKSklPiUgCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGFzLmludGVnZXIoUkFESUFUSU9OX1lOKSkgJT4lIAogIG11dGF0ZShSQURJQVRJT05fWU4gPSBSQURJQVRJT05fWU4gLSAxKQoKCmZpdF9yYWRzIDwtIGdsbShSQURJQVRJT05fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfcmFkcykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9yYWRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9yYWRzLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBJbW11bm90aGVyYXB5CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKElNTVVOT19ZTiAhPSAiVWtuIikgJT4lCiAgZHJvcGxldmVscygpICU+JQogIG11dGF0ZShJTU1VTk9fWU4gPSBmY3RfcmVjb2RlKElNTVVOT19ZTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAiWWVzIikpJT4lIAogIG11dGF0ZShJTU1VTk9fWU4gPSBhcy5pbnRlZ2VyKElNTVVOT19ZTikpICU+JSAKICBtdXRhdGUoSU1NVU5PX1lOID0gSU1NVU5PX1lOIC0gMSkKCgpmaXRfaW1tdW5vIDwtIGdsbShJTU1VTk9fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfaW1tdW5vKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X2ltbXVubyksIGNvbmZpbnQuZGVmYXVsdChmaXRfaW1tdW5vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBBbnkgVHJlYXRtZW50CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFR4X1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkKCgpmaXRfdHggPC0gZ2xtKFR4X1lOIH4gRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArCiAgICAgICAgICAgICAgICAgQUdFX0YgKyBTRVhfRiArIFJBQ0VfRiArIEhJU1BBTklDICsgSU5TVVJBTkNFX0YgKyBJTkNPTUVfRiArIAogICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMgKyBTSVRFX1RFWFQgKyBHUkFERV9GLAogICBkYXRhID0gbm9fVWtucykKCgpzdW1tYXJ5KGZpdF90eCkKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9yYWRzKSwgY29uZmludC5kZWZhdWx0KGZpdF90eCwgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgTWV0YXN0YXNpcyBhdCBUaW1lIG9mIERpYWdub3NpcwpgYGB7cn0KCmZpdF9tZXRzIDwtIGdsbShtZXRzX2F0X2R4X0YgfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KGZpdF9tZXRzKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X21ldHMpLCBjb25maW50LmRlZmF1bHQoZml0X21ldHMsIGxldmVsID0gMC45NSkpKQpgYGA=